这是我的Matlab代码,我想从同一个文件或其他文件中读取.wav文件。
str=['1.wav';'2.wav';'3.wav';'4.wav';'5.wav';];
for i=1:5
[y, fs]=wavread(str(i));
a = miraudio(str(i));
z = mirzerocross(a)
close all
end
它给我的错误就像..
使用TRYFINAL时出错(第1行)
使用vertcat时出错
连接的矩阵的尺寸不一致。
答案 0 :(得分:1)
由于MATLAB character arrays的实现方式,你的OP失败了(@patrik在this recent question中有一个非常好的解释)。如果你想使用一个字符数组,每一行必须是相同的长度,要求你以某种方式填充条目,虽然可行,但效率并不高。另一种方法是使用cell arrays,如@nkjt建议的那样,这将适用于OP中概述的实现。
然而,更通用的方法是使用MATLAB的dir
命令返回的数据结构来识别目录中的所有*.wav
文件,并对所有文件执行某些操作。它们。
pathname = 'C:\somewavfiles'; % Full path to a folder containing some wav files
wavfiles = dir(fullfile(pathname, '*.wav')); % Obtain a list of *.wav files
% Loop over all the files and perform some operations
for ii = 1:length(wavfiles)
filepath = fullfile(pathname, wavfiles(ii).name); % Generate the full path to the file using the filename and the pathname specified earlier
[y, fs] = wavread(filepath);
a = miraudio(filepath);
z = mirzerocross(a);
end
我在一些地方使用fullfile
而不是用斜杠连接字符串,以避免操作系统之间的兼容性问题。有些人使用\
,有些则使用/
。
另请注意,如文档所述,您可以在*
调用中使用通配符(dir
)来缩小返回的文件列表。