MatlabAudioRead-从单元格中的struct调用一个.wav文件时出现问题
MatlabAudioRead-从单元格中的struct调用一个.wav文件时出现问题,matlab,struct,syntax,wav,Matlab,Struct,Syntax,Wav,数据结构是一个(长度(数字)行x 3列单元格的单元格 每行对应不同的声音 第一列=目录名 第二列=文件.wav文件的结构 第三列=共振峰数据 对于i=1:num\u声音; cd(char(sound_dirs{i}));%打开一个目录 wav_list=dir('*.wav');%获取文件夹中的所有.wav文件 data_structure{i,2}=wav_list;%用struct填充第二列.wav文件的长度。 数据结构{i,1}=字{i}; 结束 问题就在这里 for i=1:num
数据结构
是一个(长度(数字)行x 3列单元格的单元格
- 每行对应不同的声音
- 第一列=目录名
- 第二列=文件.wav文件的结构
- 第三列=共振峰数据
对于i=1:num\u声音;
cd(char(sound_dirs{i}));%打开一个目录 wav_list=dir('*.wav');%获取文件夹中的所有.wav文件 data_structure{i,2}=wav_list;%用struct填充第二列.wav文件的长度。 数据结构{i,1}=字{i}; 结束
for i=1:num_sounds;
num_wavs=length(data_structure{i,2});
for i=1:num_wavs;
[y Fs]= audioread((data_structure{i,2}.name)); %%problem here
我意识到问题在于我在同一时间调用同一文件夹中的所有“.wav”文件,而不是一次调用每个文件
for i=1:num_sounds;
num_wavs=length(data_structure{i,2});
for i=1:num_wavs;
[y Fs]= audioread((data_structure{i,2}.name)); %%problem here
我尝试了数据结构{1,2}.name(40);%第一个文件夹有47个.wav文件
但那没用
name
在行中
[y Fs] = audioread((data_structure{i,2}.name)); %%problem here
表达式data\u structure{i,2}.name
将同时向函数audioread
提供所有文件名(在您的示例中为47个)作为输入参数,从而产生错误消息
如果要单独访问每个.wav
文件,需要在从dir
返回的结构中对其进行索引,即
for i=1:num_sounds;
these_files = data_structure{i,2};
for i=1:length(these_files)
[y Fs] = audioread(these_files(i).name));
% Do whatever needs to be done with y, Fs
end
end
排队
[y Fs] = audioread((data_structure{i,2}.name)); %%problem here
表达式data\u structure{i,2}.name
将同时向函数audioread
提供所有文件名(在您的示例中为47个)作为输入参数,从而产生错误消息
如果要单独访问每个.wav
文件,需要在从dir
返回的结构中对其进行索引,即
for i=1:num_sounds;
these_files = data_structure{i,2};
for i=1:length(these_files)
[y Fs] = audioread(these_files(i).name));
% Do whatever needs to be done with y, Fs
end
end
data_structure{1,2}(40).name
I=1:num_声音;I_num_wavs=length(data_structure{I,2});j=1:I_num_wavs;[y Fs]=audioread(data_structure{I,2}(j.name);end end我使用了@CrisLuengo的建议,它在命令窗口中工作,但在脚本中仍然无法运行。错误使用audioread时出错(第90行)在MATLAB路径中找不到指定的文件名。celldir中出错(第37行)[y Fs]=audioread(数据结构{i,2}(j).name)
不要使用cd
。你最终会进入最后一个目录,因此你读取的所有文件都是从那里来的。在列出目录内容时,请同时使用fullfile(目录名,文件名)
(其中文件名
是*.wav
)在阅读文件时,我开始为你的新问题写答案,但已经被删除了。现在清楚了吗?我建议wav_list=dir(fullfile(char(sound_dirs{I}),'*.wav');
和audioread(fullfile(char(sound_dirs{I})、data_structure{I,2}.name))
数据结构{1,2}(40).name
I=1:num_sounds;I_num_wavs=length(数据结构{I,2});j=1:I_num_wavs;[y Fs]=audioread(数据结构{I,2}(j).name);end end我使用了@CrisLuengo的建议,它在命令窗口中工作,但在脚本中仍然无法运行。错误使用audioread时出错(第90行)在MATLAB路径中找不到指定的文件名。celldir中出错(第37行)[y Fs]=audioread(数据结构{i,2}(j).name)
不要使用cd
。你最终会进入最后一个目录,因此你读取的所有文件都是从那里来的。在列出目录内容时,请同时使用fullfile(目录名,文件名)
(其中文件名
是*.wav
)在阅读文件时,我开始为你的新问题写答案,但已经被删除了。现在清楚了吗?我建议wav_list=dir(fullfile(char(sound_dirs{I}),'*.wav');
和audioread(fullfile(char(sound_dirs{I}),data_structure{I,2}.name))
。