matlab中FFT的使用

2017-02-14  by:CAE仿真在線  來源:互聯(lián)網(wǎng)


.調(diào)用方法
X=FFT(x);

X=FFT(x
,N);%當(dāng)x的長度小于N,則會(huì)在x末端補(bǔ)零,使長度等于N
x=IFFT(X);
x=IFFT(X,N)

MATLAB進(jìn)行譜分析時(shí)注意:
(1)函數(shù)FFT返回值的數(shù)據(jù)結(jié)構(gòu)具有對(duì)稱性。
例:
N=8;
n=0:N-1;
xn=[4 3 2 6 7 8 9 0];
Xk=fft(xn)

輸出:

Xk =

39.0000 -10.7782 + 6.2929i 0 - 5.0000i 4.7782 - 7.7071i 5.0000 4.7782 + 7.7071i 0 + 5.0000i -10.7782 - 6.2929i

Xk
xn的維數(shù)相同,共有8個(gè)元素。Xk的第一個(gè)數(shù)對(duì)應(yīng)于直流分量,即頻率值為0,值為xn各元素的和。
(2)做FFT分析時(shí),幅值大小與FFT選擇的點(diǎn)數(shù)有關(guān),但不影響分析結(jié)果。在IFFT時(shí)已經(jīng)做了處理。要得到真實(shí)的振幅值的大小,只要將得到的變換后結(jié)果乘以2除以N即可。
.FFT應(yīng)用舉例

1:x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t)。采樣頻率fs=100Hz,分別繪制N=128、1024點(diǎn)幅頻圖。

clf;
fs=100;N=128; %
采樣頻率和數(shù)據(jù)點(diǎn)數(shù)
n=0:N-1;t=n/fs; %
時(shí)間序列
x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %
信號(hào)
y=fft(x,N); %
對(duì)信號(hào)進(jìn)行快速Fourier變換
mag=abs(y); %
求得Fourier變換后的振幅
f=n*fs/N; %
頻率序列
subplot(2,2,1),plot(f,mag); %
繪出隨頻率變化的振幅
xlabel('
頻率/Hz');
ylabel('
振幅');title('N=128');grid on;
subplot(2,2,2),plot(f(1:N/2),mag(1:N/2)); %
繪出Nyquist頻率之前隨頻率變化的振幅
xlabel('
頻率/Hz');
ylabel('
振幅');title('N=128');grid on;
%
對(duì)信號(hào)采樣數(shù)據(jù)為1024點(diǎn)的處理
fs=100;N=1024;n=0:N-1;t=n/fs;
x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %
信號(hào)
y=fft(x,N); %
對(duì)信號(hào)進(jìn)行快速Fourier變換
mag=abs(y); %
求取Fourier變換的振幅
f=n*fs/N;
subplot(2,2,3),plot(f,mag); %
繪出隨頻率變化的振幅
xlabel('
頻率/Hz');
ylabel('
振幅');title('N=1024');grid on;
subplot(2,2,4)
plot(f(1:N/2),mag(1:N/2)); %
繪出Nyquist頻率之前隨頻率變化的振幅
xlabel('
頻率/Hz');
ylabel('
振幅');title('N=1024');grid on;

運(yùn)行結(jié)果:
matlab中FFT的使用

fs=100Hz
,Nyquist頻率為fs/2=50Hz。整個(gè)頻譜圖是以Nyquist頻率為對(duì)稱軸的。并且可以明顯識(shí)別出信號(hào)中含有兩種頻率成分:15Hz40Hz。由此可以知道FFT變換數(shù)據(jù)的對(duì)稱性。因此用FFT對(duì)信號(hào)做譜分析,只需考察0~Nyquist頻率范圍內(nèi)的福頻特性。若沒有給出采樣頻率和采樣間隔,則分析通常對(duì)歸一化頻率0~1進(jìn)行。另外,振幅的大小與所用采樣點(diǎn)數(shù)有關(guān),采用128點(diǎn)和1024點(diǎn)的相同頻率的振幅是有不同的表現(xiàn)值,但在同一幅圖中,40Hz15Hz振動(dòng)幅值之比均為4:1,與真實(shí)振幅0.5:2是一致的。為了與真實(shí)振幅對(duì)應(yīng),需要將變換后結(jié)果乘以2除以N。


2:x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t),fs=100Hz,繪制:
(1)數(shù)據(jù)個(gè)數(shù)N=32,FFT所用的采樣點(diǎn)數(shù)NFFT=32;
(2)N=32,NFFT=128;
(3)N=136,NFFT=128;
(4)N=136,NFFT=512

clf;fs=100; %
采樣頻率
Ndata=32; %
數(shù)據(jù)長度
N=32; ?T
的數(shù)據(jù)長度
n=0:Ndata-1;t=n/fs; %
數(shù)據(jù)對(duì)應(yīng)的時(shí)間序列
x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %
時(shí)間域信號(hào)
y=fft(x,N); %
信號(hào)的Fourier變換
mag=abs(y); %
求取振幅
f=(0:N-1)*fs/N; %
真實(shí)頻率
subplot(2,2,1),plot(f(1:N/2),mag(1:N/2)*2/N); %
繪出Nyquist頻率之前的振幅
xlabel('
頻率/Hz');ylabel('振幅');
title('Ndata=32 Nfft=32');grid on;

Ndata=32; %數(shù)據(jù)個(gè)數(shù)
N=128; ?T
采用的數(shù)據(jù)長度
n=0:Ndata-1;t=n/fs; %
時(shí)間序列
x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);
y=fft(x,N);
mag=abs(y);
f=(0:N-1)*fs/N; %
真實(shí)頻率
subplot(2,2,2),plot(f(1:N/2),mag(1:N/2)*2/N); %
繪出Nyquist頻率之前的振幅
xlabel('
頻率/Hz');ylabel('振幅');
title('Ndata=32 Nfft=128');grid on;

Ndata=136; %數(shù)據(jù)個(gè)數(shù)
N=128; ?T
采用的數(shù)據(jù)個(gè)數(shù)
n=0:Ndata-1;t=n/fs; %
時(shí)間序列
x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);
y=fft(x,N);
mag=abs(y);
f=(0:N-1)*fs/N; %
真實(shí)頻率
subplot(2,2,3),plot(f(1:N/2),mag(1:N/2)*2/N); %
繪出Nyquist頻率之前的振幅
xlabel('
頻率/Hz');ylabel('振幅');
title('Ndata=136 Nfft=128');grid on;

Ndata=136; %數(shù)據(jù)個(gè)數(shù)
N=512; ?T
所用的數(shù)據(jù)個(gè)數(shù)
n=0:Ndata-1;t=n/fs; %
時(shí)間序列
x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);
y=fft(x,N);
mag=abs(y);
f=(0:N-1)*fs/N; %
真實(shí)頻率
subplot(2,2,4),plot(f(1:N/2),mag(1:N/2)*2/N); %
繪出Nyquist頻率之前的振幅
xlabel('
頻率/Hz');ylabel('振幅');
title('Ndata=136 Nfft=512');grid on;
matlab中FFT的使用

結(jié)論:
(1)當(dāng)數(shù)據(jù)個(gè)數(shù)和FFT采用的數(shù)據(jù)個(gè)數(shù)均為32時(shí),頻率分辨率較低,但沒有由于添零而導(dǎo)致的其他頻率成分。
(2)由于在時(shí)間域內(nèi)信號(hào)加零,致使振幅譜中出現(xiàn)很多其他成分,這是加零造成的。其振幅由于加了多個(gè)零而明顯減小。
(3)FFT程序?qū)?shù)據(jù)截?cái)?這時(shí)分辨率較高。
(4)也是在數(shù)據(jù)的末尾補(bǔ)零,但由于含有信號(hào)的數(shù)據(jù)個(gè)數(shù)足夠多,FFT振幅譜也基本不受影響。
對(duì)信號(hào)進(jìn)行頻譜分析時(shí),數(shù)據(jù)樣本應(yīng)有足夠的長度,一般FFT程序中所用數(shù)據(jù)點(diǎn)數(shù)與原含有信號(hào)數(shù)據(jù)點(diǎn)數(shù)相同,這樣的頻譜圖具有較高的質(zhì)量,可減小因補(bǔ)零或截?cái)喽a(chǎn)生的影響。


開放分享:優(yōu)質(zhì)有限元技術(shù)文章,助你自學(xué)成才

相關(guān)標(biāo)簽搜索:matlab中FFT的使用 MatLab培訓(xùn) MatLab培訓(xùn)課程 MatLab在線視頻教程 MatLab技術(shù)學(xué)習(xí)教程 MatLab軟件教程 MatLab資料下載 MatLab代做 MatLab基礎(chǔ)知識(shí) Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓(xùn) Abaqus培訓(xùn) 

編輯
在線報(bào)名:
  • 客服在線請(qǐng)直接聯(lián)系我們的客服,您也可以通過下面的方式進(jìn)行在線報(bào)名,我們會(huì)及時(shí)給您回復(fù)電話,謝謝!
驗(yàn)證碼

全國服務(wù)熱線

1358-032-9919

廣州公司:
廣州市環(huán)市中路306號(hào)金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓(xùn)QQ咨詢:點(diǎn)擊咨詢 點(diǎn)擊咨詢
項(xiàng)目QQ咨詢:點(diǎn)擊咨詢
email:kf@1cae.com