2016-04-01 77 views
1

我想从某个目录读取几个文件。这里是我的脚本:读取多个文件(wavread)

prefix = '\wav\'; 
wav_arr = ['1.wav'; '2.wav'; '3.wav']; 
wav_arr = cellstr(wav_arr); 

len = length(wav_arr); 
sig = []; 
fs = []; 
for i = 1:len 
    path = strcat(pwd, prefix, wav_arr(i)); 
    [s, curr_fs] = audioread(path); 
    sig = [sig s]; 
    fs = [fs curr_fs]; 
end 

但我收到的错误:

Error using which 
Argument must contain a string. 

Error in audiovideo.internal.absolutePathForReading (line 7) 
whichFileName = which(filename); 

Error in audioread (line 74) 
filename = audiovideo.internal.absolutePathForReading(... 

Error in main_experiment (line 14) 
    [s, curr_fs] = audioread(path); 

的问题是,path1x1 cell,它不是一个string。对于path执行cellstr()不起作用。

+0

路径是MATLAB函数避免使用这个名字作为变量! – obchardon

回答

2
for i = 1:len 
    path = strcat(pwd, prefix, wav_arr(i)); 
    [s, curr_fs] = audioread(path); 
    sig = [sig s]; 
    fs = [fs curr_fs]; 
end 

成为

for i = 1:len 
    path = strcat(pwd, prefix, wav_arr{i}); 
    [s, curr_fs] = audioread(path); 
    sig = [sig s]; 
    fs = [fs curr_fs]; 
end 

这就是全部,阅读有关MATLAB中的细胞中的文档,以了解细胞之间的差值(1)和细胞{1}

+1

而不是'strcat(pwd,prefix,wav_arr {i});'我会建议使用'fullfile(pwd,prefix,wav_arr {i});'而不是。意图是更清晰恕我直言。此外,它允许使用'prefix ='wav',而不用担心正确的斜杠。像你自己所建议的那样,将'path'重命名为'filename' –