回覆列表
-
1 # ftisz38957
-
2 # 泰迪神蹟
在matlab中應用fft求傅立葉變換後,如果想畫出頻譜圖,必須用fftshift命令處理變換的結果。
例子如下:
clear;
clc;
t=0:0.001:2;
n=2001;
Fs=1000;
Fc=200;
x=cos(2*pi*Fc*t);
y1=fft(x);
y2=fftshift(y1);
f=(0:2000)*Fs/n-Fs/2;
hold on;
plot(f,abs(y1),"r")
plot(f,abs(y2),"b")
結果如下圖:
圖中紅色是沒經過fftshift處理的頻譜圖,藍色是經過處理之後的。結合程式,顯然x的頻譜應該位於200Hz處,經過fftshift處理的藍色頻譜是正確的。
注意:紅色和藍色的曲線在兩邊分別關於-250Hz和250Hz對稱,這並不是偶然。
頻譜圖有兩塊,一塊是幅度跟w的關係,另一塊是相位fai跟頻率的關係,前者只要求模就可以算出函式從而畫圖,後者用虛部除以實部,然後求arctan可以算出函式,再把函式畫圖即可頻譜圖有兩塊,一塊是幅度跟w的關係,另一塊是相位fai跟頻率的關係,前者只要求模就可以算出函式從而畫圖,後者用虛部除以實部,然後求arctan可以算出函式,再把函式畫圖即可