2013-11-26 35 views
1

我正在嘗試生成譜圖,以便以後可以將它們與單詞樣本進行比較,以便進行非常基本的語音識別項目。這是在循環中完成的。代碼如下:將波譜圖保存在一個用於wav文件的循環中

folder = '<<my directory path>>'; 
files = dir(fullfile(folder,'*.wav')); 
for k = 1:length(files) 
    baseFileName = files(k).name; 
    fullFileName = fullfile(folder, baseFileName); 
    fprintf(1, 'Now reading %s\n', fullFileName); 
    [word, fs] = wavread(fullFileName); 
    sound(word, fs); 
    figure('visible','off'); 
    %%fig = figure, specgram(fullFileName, 512, fs); 
    %%saveas(fig, baseFileName.fig); 
end 

我的問題是在最後兩行。我想將譜圖保存爲一個.fig文件(除非你們稍後有更好的建議用於比較),並將其命名爲baseFileName。我一直在搜索Google,但格式化令人困惑,沒有太多的關於光譜圖被保存爲數字。

我更喜歡它,如果所有的數字沒有彈出在循環中,但我可以處理。

編輯:或許它會更好地存儲爲matfile文件?

回答

0

這是否適合您?

for k=1:length(files) 
    h=figure 
    spectrogram(); 
    Figname = strcat(baseFileName,'.fig'); 
    saveas(h,Figname); 
end 

對於具有比其他.FIG格式,另一種方法的數字:

fh=figure 
for k=1:length(files) 
    figure(fh); 
    spectrogram(); 
    frm = getframe(fh); 
    Figname = strcat(baseFileName,'.jpg'); 
    imwrite(frm.cdata, Figname); 
end 

不幸的是它會導致錯誤「無法確定從文件名的文件格式」試圖保存時。用這種方法的無花果文件。

+0

我需要它保存爲baseFileName.fig。它遍歷具有不同名稱(例如狗,貓等)的wav文件列表,該文件臨時存儲在baseFileName中用於循環目的。另外,我仍然需要specgram以和specGream(fullFileName,512,fs)相同的方式出現,否則它看起來不正確。 編輯:對不起,如果我沒有多少意義我不太熟悉MATLAB及其語法。 – Michi

+0

如何在回覆中更新使用strcat函數? – lennon310

+0

我收到以下錯誤: 使用imwrite時出錯(第431行) 無法從文件名中確定文件格式。 specAllTheFiles錯誤(第18行) imwrite(frm.cdata,Figname); – Michi

相關問題