2015-06-14 78 views
1

我有一些問題從另一個問題了解這段代碼(我不能評論這個答案,因爲我是新的,我沒有足夠的聲望)。這個代碼如何使用wavread函數在matlab中工作?

的代碼是這樣的:

[song, fs] = wavread('C:\Path of My File\song.wav'); 
song = song(1:fs*10); 
spectrogram(song, windowSize, windowOverlap, freqRange, fs, 'yaxis'); 

我不知道是什麼的第二行代碼一樣。有人可以解釋嗎?它會影響譜圖的輸出嗎?

我的代碼是:

[song, fs] = wavread('C:\Users\Iván\Downloads\Kawai-K3-Strings-C5.wav'); 
song = song(1:fs*5); //(first this line was ...(1:fs*10) but didnt work. why? i would like to know. 
spectrogram(song, 256, [], [], fs, 'xaxis'); 

回答

1

代碼的第二行被提取歌曲的時間序列長度的10倍以赫茲的採樣頻率的的樣品。

你應該先檢查是否有足夠的樣本中的歌曲通過

songlength = numel(曲)/ FS

如果沒有足夠的樣本檢查歌曲的長度要覆蓋採樣頻率的10倍,請使用較短的乘數。

然後對該樣本計算譜圖,而不是整首歌曲。

您需要查閱光譜圖上的Matlab文檔以選擇調用選項來完成有用的信號處理目標,具體取決於您想要執行的操作。

+0

嗨,我編輯了我的問題。 TY –