Matlab做快速傅利葉變換

2021-07-10 03:57:37 字數 1513 閱讀 2890

快速傅利葉變換(fast fourier transform)是訊號處理與資料分析領域裡最重要的演算法之一。傅利葉變換在物理學、數論、組合數學、訊號處理、概率、統計、密碼學、聲學、光學等領域都有著廣泛的應用。

那麼如何用matlab實現快速傅利葉變換呢?直接上**。

tp=0:2048;                              %  時域資料點數n

yt=sin(0.08*pi*tp).*exp(-tp/80); % 生成正弦衰減函式

plot(tp,yt), axis([0,400,-1,1]), % 繪正弦衰減曲線

t=0:800/2048:800; % 頻域點數nf

f=0:1.25:1000;

yf=fft(yt); % 快速傅利葉變換

ya=abs(yf(1:801)); % 幅值

yp=angle(yf(1:801))*180/pi; % 相位

yr=real(yf(1:801)); % 實部

yi=imag(yf(1:801)); % 虛部

figure

subplot(2,2,1)

plot(f,ya),axis([0,200,0,60]) % 繪製幅值曲線

title('幅值曲線')

subplot(2,2,2)

plot(f,yp),axis([0,200,-200,10]) % 繪製相位曲線

title('相位曲線')

subplot(2,2,3)

plot(f,yr),axis([0,200,-40,40]) % 繪製實部曲線

title('實部曲線')

subplot(2,2,4)

plot(f,yi),axis([0,200,-60,10]) % 繪製虛部曲線

title('虛部曲線')

結果如下:

我們眼中的世界就像皮影戲的大幕布,幕布的後面有無數的齒輪,大齒輪帶動小齒輪,小齒輪再帶動更小的。在最外面的小齒輪上有乙個小人——那就是我們自己。我們只看到這個小人毫無規律的在幕布前表演,卻無法**他下一步會去哪。而幕布後面的齒輪卻永遠一直那樣不停的旋轉,永不停歇。這樣說來有些宿命論的感覺。說實話,這種對人生的描繪是我乙個朋友在我們都是高中生的時候感嘆的,當時想想似懂非懂,直到有一天我學到了傅利葉變換……

c語言做快速傅利葉變換和快速逆傅利葉變換

快速傅利葉變換 fft 和快速逆傅利葉變換 ifft 要求做傅利葉變換的資料點數只能是2的整數次冪,比如2,4,8,16,32,64,128,256,512,1024,2048,如果是2000個資料,那麼用快速傅利葉變換 fft 的結果就不對了,就需要使用對資料點數不限制的離散傅利葉變化 dft 了...

快速傅利葉變換 及MATLAB函式

快速傅利葉變換實用程式 include include include define pi 3.1415926 typedef struct complexnumber cnumber void quickfft cnumber p,int n,int k,cnumber f,int l,int i...

matlab 傅利葉變換

兩幅影象傅利葉變換後相加 f1 imread rice.tif 讀圖一f2 imread circles.tif 讀圖二f1 fft2 double f1 對圖一進行傅利葉變換 f2 fft2 double f2 對圖二進行傅利葉變換 f f1 f2 兩幅圖在頻率域融合 f ifft2 f 對f 反...