如何在Matlab中进行批量输入

时间:2015-03-22 03:49:12

标签: matlab

我希望我的Matlab程序能够进行批量输入。那是从当前目录,我的程序将读取所有名称为1-1,1-2,2-1,2-2的wav文件,直到M-1和M-2。 M也将作为输入。我怎么能做到这一点?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

您可以将dirfor循环结合使用。 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的声音。