2016-04-01 21 views
1

Belirli dizinden birkaç dosyayı okumak istiyorum. İşte benim senaryom:Birden fazla dosya oku (dalga boyu)

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 

Ama hata alırsınız:

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); 

sorun bu string değil, path1x1 cell olmasıdır. Ve path için cellstr() yürütme çalışmıyor.

+0

yolu olan bir Matlab fonksiyonu önlemek, hepsi hücre arasındaki farkı anlamak için Matlab'de hücreler hakkında doküman okuma

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

olmak Bu ismi değişken olarak kullan! Strcat (pwd, prefix, wav_arr {i}) yerine – obchardon

cevap

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 

(1) ve hücre {1}

+1

; 'yerine fullfile (pwd, prefix, wav_arr {i}); Amaç daha açık IMHO'dur. Ayrıca, 'prefix = 'wav'' kullanılmasına izin verir ve doğru eğik çizgileri hakkında endişelenmeyin. Ayrıca kendinize önerdiğiniz gibi 'dosya' işlevini de yeniden adlandırın :) –

İlgili konular