我希望我的Matlab程序能够进行批量输入。那是从当前目录,我的程序将读取所有名称为1-1,1-2,2-1,2-2的wav文件,直到M-1和M-2。 M也将作为输入。我怎么能做到这一点?任何帮助将不胜感激。
答案 0 :(得分:3)
您可以将dir
与for
循环结合使用。 dir
允许您搜索与模式相关的所有文件名。在您的情况下,您要搜索所有.wav
个文件。首先,指定.wav
文件所在的位置,然后在循环中,您可以单独处理每个声音信号,也可以将它们全部堆叠在一个单元格数组中。我假设你的所有声音文件的长度都不相等,这就是我建议使用单元格数组的原因。
所以,做到这一点:
loc = '/path/to/my/files'; %// Specify directory here
f = dir([loc '/*.wav']); %// Search for files
%// For each file....
for idx = 1 : numel(f)
%// Read in audio from file
d = fullfile(loc, f(idx).name);
[y,Fs] = audioread(d);
%// y contains your signal... do something with it
%//...
%//...
end
或者,你可以这样做:
loc = '/path/to/my/files'; %// Specify directory here
f = dir([loc '/*.wav']); %// Search for files
%// Specify cell array to contain all of your sound signals
out = cell(1, numel(f));
%// For each file....
for idx = 1 : numel(f)
%// Read in audio from file
d = fullfile(loc, f(idx).name);
[y,Fs] = audioread(d);
%// y contains your signal... add this to the cell array
out{idx} = y;
end
%// out contains all of your sound signals, so do something with them
如果您选择执行第二个选项,请执行out{idx}
访问单元格数组中索引为idx
的声音。