Matlab使用fft畫出信號(hào)頻譜圖的方法
做雷原作業(yè),需要對(duì)信號(hào)進(jìn)行頻譜分析,網(wǎng)上一搜太亂了,很多不是我想要的,特此整理。
DSP還沒學(xué)到fft,就不對(duì)fft原理進(jìn)行詳細(xì)解釋了,直接上代碼。
fs=500;%采樣率 f1=5;%信號(hào)頻率 f2=10;%信號(hào)頻率 T=1;%時(shí)寬1s n=round(T*fs);%采樣點(diǎn)個(gè)數(shù) t=linspace(0,T,n);%時(shí)域橫坐標(biāo) x = 3+cos(2*pi*f1*t) + 2.*cos(2*pi*f2*t);%形成三頻信號(hào),注意第二個(gè)頻率信號(hào)幅度為2,直流幅度為3 figure(1); plot(t,x);%畫時(shí)域圖 xlabel("t/s") grid on X = fftshift(fft(x./(n))); %用fft得出離散傅里葉變換 f=linspace(-fs/2,fs/2-1,n);%頻域橫坐標(biāo),注意奈奎斯特采樣定理,最大原信號(hào)最大頻率不超過采樣頻率的一半 figure(2) plot(f,abs(X));%畫雙側(cè)頻譜幅度圖 xlabel("f/Hz") ylabel("幅度") grid on
顯然,該信號(hào)有三個(gè)頻率分量,直流(0頻),5Hz和10Hz,對(duì)應(yīng)的幅度分別為3、1、2,其時(shí)域波形圖如下:
轉(zhuǎn)換為頻域的關(guān)鍵函數(shù)是X = fftshift(fft(x./(n)));
一定注意需要除以總樣本數(shù)n,然后用fftshift將曲線挪一下位置。
做完這步操作后,得出的是雙邊頻譜,頻率范圍從-fs/2到fs/2,這是因?yàn)槟慰固夭蓸佣ɡ恚o定采樣頻率為fs,那么原信號(hào)的最大頻率不超過fs/2。橫坐標(biāo)的點(diǎn)數(shù)和時(shí)域信號(hào)的采樣點(diǎn)數(shù)相同,這由離散傅里葉變換的性質(zhì)給出。
繪制頻譜幅度圖如下:
可以看到,直流分量的幅度是3,這與時(shí)域的幅度相同,5Hz和10Hz的幅度分別為0.5和1,這比時(shí)域的幅度減小了一半,這是由于這個(gè)頻譜圖是雙邊頻譜。沿著x=0線“對(duì)折”過去加起來,就變成單邊頻譜,頻域幅度就和時(shí)域幅度對(duì)應(yīng)上了。
到此這篇關(guān)于Matlab使用fft畫出信號(hào)頻譜的文章就介紹到這了,更多相關(guān)Matlab畫fft信號(hào)頻譜內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
300行代碼讓外婆實(shí)現(xiàn)語音搜索購物功能
這篇文章主要介紹了300行代碼讓外婆實(shí)現(xiàn)語音搜索購物功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03Scala函數(shù)式編程專題--scala基礎(chǔ)語法介紹
這篇文章主要介紹了scala基礎(chǔ)語法的的相關(guān)資料,文中講解非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-06-06微信支付jsapi缺少參數(shù) total_fee 錯(cuò)誤分析與解決方法
這篇文章主要介紹了微信支付jsapi缺少參數(shù) total_fee 錯(cuò)誤分析與解決方法,需要的朋友可以參考下2018-03-03詳解靜態(tài)分析技術(shù)符號(hào)執(zhí)行
本文提綱絜領(lǐng)的介紹了符號(hào)執(zhí)行,讓大家明白這個(gè)技術(shù)的主要作用和面臨的挑戰(zhàn),領(lǐng)大家入坑。2021-05-05詳解windows 環(huán)境下搭建electricSearch+kibana
這篇文章主要介紹了windows 環(huán)境下搭建electricSearch+kibana,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05