MATLAB audioread-从单元格中的结构调用一个.wav文件时出现问题

时间:2019-04-14 03:24:19

标签: matlab struct syntax wav

enter image description here

data_structure是一个(长度(num_sounds)行x 3列单元格的单元格

  • 每行对应一个不同的声音
  • 第一列=目录名称
  • 第二列= .wav文件的文件结构
  • 第三列=共振峰数据

    for i=1:num_sounds;              cd(char(sound_dirs{i})); %open a directory wav_list=dir('*.wav'); %get all the .wav files in the folder data_structure{i,2}=wav_list; % fills second column with struct the length of the .wav files. data_structure{i,1}=words{i}; end

问题就在这里

 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”文件,而不能一次调用每个文件。

我尝试了data_structure{1,2}.name(40); % the first folder has 47 .wav files

但这没用。

name <-保存.wav文件的所有名称。

enter image description here

1 个答案:

答案 0 :(得分:2)

在线

[y Fs] = audioread((data_structure{i,2}.name)); %%problem here

表达式data_structure{i,2}.name会将所有文件名(在您的示例中为47)作为函数audioread的输入参数一次输入,因此会出现错误消息。

如果要分别访问每个.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