FFT詳解

FFT詳解

  • 頻域模值*2/N=時域幅度
  • fft/ifft前后的數(shù)據(jù)會在能量上差sqrt(n); 可以使用rms()來查看;
pow_pre=rms(data);
pow_post =rms(fft(data));
ratio=pow_post/pow_pre;   
  • fft的頻率分辨率為fs/N
  • 第n個點的頻率為Fn=(n-1)fs/N
  • fft運(yùn)算本質(zhì)上是一個矩陣乘法,下面兩個運(yùn)算a=b
a=fft(data)
b=data*dftmtx(length(data))
Paste_Image.png
公式

Paste_Image.png
clear all;
N=2048; %fft點數(shù)
fs=512; %采樣率
ts=1/fs;
t=0:ts:(N-1)*ts;

d=10*cos(2*pi*20*t)+2*cos(2*pi*150*t);

df=fftshift(fft(d)).*2/N;  %fft前后的幅度變化
f_x = [-N/2:N/2-1]*fs/N; 
plot(f_x,df);

xlabel('frequency (Hz)')
ylabel('Magnitude')

1.fft點數(shù)不同對FFT的影響

FFT的結(jié)果在-fs/2:fs/2-1之間奸攻,共有N個點褒墨。FFT的點數(shù)代表頻率分辨率;頻率分辨率是f0=fs/N
不同的fs之間fft的區(qū)別;fs的增大意味著分析帶寬的增大;同時會降低頻率分辨率轿塔;
頻率分辨率f0=fs/N;可見降低fs或增大N都可以使得f0減小,即提高頻率分辨率催训;
時域補(bǔ)零相當(dāng)于頻域插值

Paste_Image.png

Paste_Image.png
close all; clc; clear all;
%% 128point fft vs 128point with zeros padding
fs=1e3;
N=128;
t=[0:N-1]/fs;
f1=200;f2=100;
a1=0.5;a2=1;
x=a1*cos(2*pi*f1*t)+a2*sin(2*pi*f2*t);
x_len=length(x);
W=dftmtx(N);
x_fft = x*W;
x_max = max(x_fft);
f=(-1/2*N:1/2*N-1)*fs/N;
figure
subplot(2,2,1)
plot(f,fftshift(abs(x_fft)));
title('128point')
subplot(222)
t_less=[0:N-29]/fs;
x_less=a1*cos(2*pi*f1*t_less)+a2*sin(2*pi*f2*t_less);
x_p = [x,zeros(1,128)]; 
x_p_fft = fft(x_p);
f=(-1/2*256:1/2*256-1)*fs/256;
plot(f,abs(fftshift(x_p_fft)))'
title('zeros padding fft256');

%% 128fft vs 512fft
fs=1e3;
N=128;
t=[0:N-1]/fs;
f1=200;f2=100;
a1=0.5;a2=1;
x=a1*cos(2*pi*f1*t)+a2*sin(2*pi*f2*t);
x_len=length(x);
W=dftmtx(N);
x_fft = x*W;
x_max = max(x_fft);
f=(-1/2*N:1/2*N-1)*fs/N;

subplot(223)
plot(f,fftshift(abs(x_fft)));
title('128point')
N=512;
t=[0:N-1]/fs;
x=a1*cos(2*pi*f1*t)+a2*sin(2*pi*f2*t);
W=dftmtx(N);
x_fft = x*W;
f=(-1/2*N:1/2*N-1)*fs/N;

subplot(224)
plot(f,fftshift(abs(x_fft)));
title('512point');

%% 128point fft vs 128point with zeros padding
fs=1e3;
N=512;
t=[0:N-1]/fs;
f1=200;f2=100;
a1=0.5;a2=1;
x=a1*cos(2*pi*f1*t)+a2*sin(2*pi*f2*t);
x_len=length(x);
W=dftmtx(N);
x_fft = x*W;
x_max = max(x_fft);
f=(-1/2*N:1/2*N-1)*fs/N;
figure
subplot(1,2,1)
plot(f,fftshift(abs(x_fft)));
title('512point&fs=1e3')
subplot(122)

fs=1e4;
t =[0:N-1]/fs;
x=a1*cos(2*pi*f1*t)+a2*sin(2*pi*f2*t);
x_fft = x*W;
f=(-1/2*N:1/2*N-1)*fs/N;
plot(f,abs(fftshift(x_fft)))'
title('512point&fs=1e4')

2. 采樣率的影響:

因為fft的點數(shù)要是2n;如果fs是信號頻率的2n倍時洽议;所取做fft的點數(shù)n采樣不是整周期采樣;因為fft是把階段信號做周期化處理進(jìn)行的漫拭;如果不是整周期采樣亚兄,則周期化時,首尾采樣點跳變采驻,會引入高頻信號审胚;

Paste_Image.png
fs=1e3;
N=128;
t=[0:N-1]/fs;
f1=200;f2=100;
a1=0.5;a2=1;
x=a1*cos(2*pi*f1*t)+a2*sin(2*pi*f2*t);
x_len=length(x);
W=dftmtx(N);
x_fft = x*W;
x_max = max(x_fft);
f=(-1/2*N:1/2*N-1)*fs/N;
figure
subplot(2,2,1)
plot(f,fftshift(abs(x_fft)));
title('16point & fs=1e3')
subplot(222)
fs=800;
N=128;
t=[0:N-1]/fs;
x=a1*cos(2*pi*f1*t)+a2*sin(2*pi*f2*t);
x_fft=fft(x);
f=(-1/2*N:1/2*N-1)*fs/N;
plot(f,abs(fftshift(x_fft)));
title('16point & fs=800');
subplot(223)
fs=1200;
N=128;
t=[0:N-1]/fs;
x=a1*cos(2*pi*f1*t)+a2*sin(2*pi*f2*t);
x_fft=fft(x);
f=(-1/2*N:1/2*N-1)*fs/N;
plot(f,abs(fftshift(x_fft)));
title('16point & fs=1200');
subplot(224)
fs=2000;
N=128;
t=[0:N-1]/fs;
x=a1*cos(2*pi*f1*t)+a2*sin(2*pi*f2*t);
x_fft=fft(x);
f=(-1/2*N:1/2*N-1)*fs/N;
plot(f,abs(fftshift(x_fft)));
title('16point & fs=2000');

3. 窗函數(shù)的影響:

實際情況下,我們得到的信號都是有限長的礼旅,即對原始序列作加窗處理使其成為有限長膳叨,時域的乘積對應(yīng)頻域卷積,造成頻率的泄露痘系。減小泄露的防范可以取更慘的數(shù)據(jù)菲嘴,缺點是運(yùn)算量更大;也可以選擇窗的形狀汰翠,使得窗譜的旁瓣能量更小龄坪。(濾波器是時域卷積相當(dāng)于頻域相乘,加窗和過濾波器運(yùn)算不相同)复唤。
在對信號做FFT分析時健田,如果采樣頻率固定不變,由于被采樣信號自身頻率的微小變化以及干擾因素的影響佛纫,就會使數(shù)據(jù)窗記錄的不是整數(shù)個周期妓局。從時域來說,這種情況在信號的周期延拓時就會導(dǎo)致其邊界點不連續(xù)呈宇,使信號附加了高頻分量; 從頻域來說好爬,由于FFT算法只是對有限長度的信號進(jìn)行變換,有限長度信號在時域相當(dāng)于無限長信號和矩形窗的乘積甥啄,也就是將這個無限長信號截短存炮,對應(yīng)頻域的傅里葉變換是實際信號傅里葉變換與矩形窗傅里葉變換的卷積。
增加采樣長度可以分析出更多頻率的信號型豁,可以減少頻譜泄露,不過增加采樣長度必然會對數(shù)據(jù)處理的實時性造成影響尚蝌!理想的窗函數(shù)是主瓣很窄迎变,旁瓣衰減很快,矩形窗的主瓣很窄飘言,但是旁瓣衰減卻很慢衣形,hanning窗、hamming窗、blackman窗等的旁瓣衰減有了明顯的改進(jìn)谆吴,但是主瓣卻寬了很多倒源,大概是矩形窗主瓣的二倍,blackman窗的主瓣還要寬句狼,這就造成了信號頻譜的頻率識別率很低笋熬!
加窗的區(qū)別:1是沒加窗相當(dāng)于矩形窗,2是hamming腻菇;3是加矩形窗胳螟;

Paste_Image.png
%% 128point fft windows
fs=1e3;
N=128;
t=[0:N-1]/fs;
f1=200;f2=100;
a1=0.5;a2=1;
x=a1*cos(2*pi*f1*t)+a2*sin(2*pi*f2*t);
x_len=length(x);
W=dftmtx(N);
x_fft = x*W;
x_max = max(x_fft);
f=(-1/2*N:1/2*N-1)*fs/N;
figure
subplot(2,2,1)
plot(f,fftshift(abs(x_fft)));
title('512point&fs=1e3')
subplot(222)
 
win=hamming(N);
x_fft = x.*win'*W;
plot(f,fftshift(abs(x_fft)));
title('hamming')
 
subplot(223)
rwin = rectwin(N);
x_fft = x.*rwin'*W;
plot(f,fftshift(abs(x_fft)));
title('rectwin')

參考資料:

http://blog.jobbole.com/70549/
http://www.cnblogs.com/v-July-v/archive/2011/02/20/1983676.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市筹吐,隨后出現(xiàn)的幾起案子糖耸,更是在濱河造成了極大的恐慌,老刑警劉巖丘薛,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嘉竟,死亡現(xiàn)場離奇詭異,居然都是意外死亡洋侨,警方通過查閱死者的電腦和手機(jī)舍扰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凰兑,“玉大人妥粟,你說我怎么就攤上這事±艄唬” “怎么了勾给?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長锅知。 經(jīng)常有香客問我播急,道長,這世上最難降的妖魔是什么售睹? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任桩警,我火速辦了婚禮,結(jié)果婚禮上昌妹,老公的妹妹穿的比我還像新娘捶枢。我一直安慰自己,他們只是感情好飞崖,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布烂叔。 她就那樣靜靜地躺著,像睡著了一般固歪。 火紅的嫁衣襯著肌膚如雪蒜鸡。 梳的紋絲不亂的頭發(fā)上胯努,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機(jī)與錄音逢防,去河邊找鬼叶沛。 笑死,一個胖子當(dāng)著我的面吹牛忘朝,可吹牛的內(nèi)容都是我干的灰署。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼辜伟,長吁一口氣:“原來是場噩夢啊……” “哼氓侧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起导狡,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤约巷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后旱捧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體独郎,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年枚赡,在試婚紗的時候發(fā)現(xiàn)自己被綠了氓癌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡贫橙,死狀恐怖贪婉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情卢肃,我是刑警寧澤疲迂,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站莫湘,受9級特大地震影響尤蒿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜幅垮,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一腰池、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧忙芒,春花似錦示弓、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至甘桑,卻和暖如春拍皮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背跑杭。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工铆帽, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人德谅。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓爹橱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親窄做。 傳聞我的和親對象是個殘疾皇子愧驱,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一、傅立葉變換的由來 關(guān)于傅立葉變換椭盏,無論是書本還是在網(wǎng)上可以很容易找到關(guān)于傅立葉變換的描述组砚,但是大都是些故弄玄虛...
    constant007閱讀 4,432評論 1 10
  • 在學(xué)習(xí)數(shù)字信號處理時,很多種頻率很容易搞混淆,有模擬/數(shù)字/頻率/角頻率等等,也不是特別清楚不同頻率之間的關(guān)系,希...
    constant007閱讀 13,968評論 1 9
  • 深入理解傅里葉變換Mar 12, 2017 這原本是我在知乎上對傅立葉變換、拉普拉斯變換掏颊、Z變換的聯(lián)系糟红?為什么要進(jìn)...
    價值趨勢技術(shù)派閱讀 5,760評論 2 2
  • 信號截斷及能量泄漏效應(yīng) 數(shù)字信號處理的主要數(shù)學(xué)工具是傅里葉變換,而傅里葉變換是研究整個時間域和頻率域的關(guān)系乌叶。然而盆偿,...
    李彪_哈工大閱讀 21,227評論 0 7
  • 眨眼間,場上的局勢發(fā)生了翻天覆地的變化准浴,原本毫無反手之力事扭,被虐殺到極致的王也直接來了一個大反轉(zhuǎn),秒殺了何朝陽乐横,甚至...
    jaeson舒閱讀 182評論 0 0