天天看點

matlab快速入門(18):項目 音頻頻率

介紹:

matlab快速入門(18):項目 音頻頻率

 (1)C 和弦錄音存儲在一個名為 Cchord.mat 的檔案中。此檔案包含兩個變量:

y:錄音信号

fs:采樣頻率

此任務使用 numel 函數傳回數組中的元素數目。

任務:加載檔案  Cchord.mat。建立一個名為  n 的變量,表示  y 中的元素數目。然後使用  n 建立等間距向量  t,該向量以  0 開頭,以  n-1 結尾,元素之間的間距為  1。

matlab快速入門(18):項目 音頻頻率
 (2)

t

現在有正确的點數,但它需要表示音頻信号的采樣時間。您可以使用采樣頻率

fs

将向量轉換為時間(以秒為機關)。

任務:将 

t

除以 

fs

。将輸出賦給同一個變量 

t

。然後繪制 

y

對 

t

的圖。
matlab快速入門(18):項目 音頻頻率
 (3)在繪圖中,請注意

y

是周期性的,但它不是簡單的正弦波。它由具有不同頻率的多個正弦波組成。傅裡葉變換将傳回信号的頻譜資訊。主頻的位置将顯示和弦中包含的音符。

可以使用

fft

函數來計算向量的離散傅裡葉變換。

fft(y)      

fft

的輸出值為複數。您可以使用

abs

函數來獲得幅值。

任務: 建立一個名為

yfft

的變量,表示

y

的離散傅裡葉變換的絕對值。

matlab快速入門(18):項目 音頻頻率

 (4)在任務 1 和 2 中,您已計算了信号 y 的時間向量 t。同樣,您需要為您的 FFT 向量 yfft 計算頻率向量 f。

任務: 建立等間距向量 f,該向量以 0 開頭,以 n-1 結尾,元素之間的間距為 1。

matlab快速入門(18):項目 音頻頻率

 (5)向量 

f

 現在包含 

n

 個點。要将這些點轉換為頻率,您可以将整個向量乘以采樣頻率 (

fs

),然後除以點數 (

n

)。

f

 将包含從 

 到 

fs

 的頻率。主頻位于 

f

 的開頭位置。您可以使用 

xlim

 函數放大所關注的區域。

xlim([xmin xmax])      

任務: 将

f

乘以

fs/n

。将輸出賦給同一個變量

f

。 使用 x 的限值

1000

繪制

yfft

f

的圖

matlab快速入門(18):項目 音頻頻率