我正在創建一個文件來讀取一定數量的.wav文件,每個文件對應一個音符。我正在對它們進行FFT,並將它們全部繪製在同一個圖上。不過,我在正確打印圖例時遇到了問題,它將要使用的名稱分隔爲單個字母,而不是將它們用作字符串。我的代碼如下:FOR循環後的Matlab圖例
clear all
mydir = 'Note Values/';
wavFiles = dir([mydir '*.wav']);
length(wavFiles)
legendText = [];
figure(1);
hold on;
for i = 1:length(wavFiles)
wavFiles(i).name
[y, fs] = wavread([mydir wavFiles(i).name]);
sound(y, fs)
currentSample = y(round(length(y)/2)-2048:round(length(y)/2)+2047);
FFT = abs(fft(currentSample));
Power = FFT.*conj(FFT)/length(FFT);
if (mod(i, 2) == 1)
h = plot(Power, 'Color', 'red');
else
h = plot(Power, 'Color', 'blue');
end
sri = wavFiles(i).name;
sri
legendText = [legendText, sri];
end
length(legendText)
legendText(1)
legend(legendText(:));
hold off;
斯里蘭卡變量始終是一個完整的字符串,但的LegendText(1)只打印出而不是A3.wav的。我知道這可能是非常明顯的,但我無法找到它。由於
我圖的輸出表現爲這樣:
作爲一個方面說明,它看起來應該在對數刻度而不是線性上繪製y軸。使用`semilogy`函數或者簡單地:`set(gca,'YScale','log')`... – Amro 2011-01-21 13:23:15