講這個話題,就要先搞清楚頻譜、功率譜的概念,可參考我的另一篇文章
[信號的頻譜 頻譜密度 功率譜密度 能量譜密度]
做信號處理的朋友應該都會fft比較熟悉,就是求傅里葉變換。我在這里也不再去講這個函數了,但需要注意的一點:實信號的頻譜關于0頻對稱,是偶函數,如果st = cos(2pif0*t)+1; t的長度為4000,那么0頻的位置在第一個點,做fftshift后,0頻的位置在低2001個點的位置,fft后的信號關于第2001個點對稱,而不是4000個點左右對稱。
pwelch是用來求功率譜的,采用Welch平均周期法對信號進行譜估計,它通過分段選取數據進行加窗求功率,再進行平均,pwelch函數的使用方式為:
pxx = pwelch(x,window,noverlap,nfft)
[pxx,f] = pwelch(x,window,noverlap,f,fs)
其中,
X
表示輸入序列;window
:當window是一個數值時,表示窗函數長度,即分段長度L
,默認的窗函數為hamming窗;當window是一個序列時,表示窗函數序列;NFFT
表示FFT的點數,X為實數時,當NFFT
是偶數時,Pxx
的長度是(NFFT/2+1)
;當NFFT
是奇數時,Pxx
的長度是(NFFT+1)/2
;X為復數時,Pxx
的長度就是NFFT
,如果NFFT
沒有指定,則默認是256或者比X長度大的2的N次冪Fs
繪制功率譜曲線的采樣頻率,默認值為1Pxx
表示功率譜估計值F
表示Pxx值所對應的頻率點NOVERLAP
指定分段重疊的樣本數 ,如果NOVERLAP=L/2
,則可得到重疊50%的Welch法平均周期圖
下面我們分別用fft和fwelch來求信號的功率譜。
clc;close all;clear all;
fs = 10e6;
N = 4000;
t = (0:N-1)/fs;
f0 = 1e5;
st = cos(2*pi*f0*t) + 1;
st_fft = fft(st);
psdx = abs(st_fft(1:end/2+1)).^2/fs/N; %功率譜密度為能量譜密度除以時間,摸值的平方即為能量譜
psdx(2:end) = 2*psdx(2:end); %乘2是因為fft結果是對稱的,在計算功率時需要把功率加回來;第一個點是0頻,這個點并不對稱
freq = linspace(0,fs/2,length(psdx));
[pxx,f] = pwelch(st,rectwin(N),32,N,fs);
figure;plot(freq,psdx);title('fft方法求功率譜密度');grid on
figure;plot(f,pxx);title('fwelch方法求功率譜密度');grid on
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
信號處理
+關注
關注
48文章
1030瀏覽量
103296 -
FFT
+關注
關注
15文章
434瀏覽量
59401 -
傅里葉
+關注
關注
0文章
59瀏覽量
20481
發布評論請先 登錄
相關推薦
為什么LabVIEW的fft.vi和MATLAB的fft函數計算出來的結果不同?
LabVIEW的fft.vi和MATLAB的fft函數計算的結果有時相差很小,有時完全不同這是為什么?例如在MATLAB中x=[1 2 3
發表于 10-31 21:05
FFT功率譜問題
您好,抱歉我的英語不好。我可以在FFTBuffic中獲得FFT頻譜,但是不能得到FrimeSuffRealEdCurx()的功率譜。我的代碼有什么問題,或者程序參數錯誤嗎?我使用DSP
發表于 08-27 15:11
FFT和IFFT的Matlab實現
第28章 FFT和IFFT的Matlab實現(幅頻響應和相頻響應)本章主要講解fft,ifft和fftshift在matlab上的實現。目錄第28章
發表于 08-17 07:48
FFT和IFFT的Matlab實現
第28章 FFT和IFFT的Matlab實現(幅頻響應和相頻響應)本章主要講解fft,ifft和fftshift在matlab上的實現。目錄第28章
發表于 08-17 06:22
基于MATLAB系統的信號FFT頻譜分析與顯示
基于MATLAB系統的信號FFT頻譜分析與顯示:給出一種用MATLAB系統實現信號頻譜分析與顯示的方法。MATLAB是具有很強的科學計算和圖形顯示界面的軟件系統。該法可對語音信號進行基
發表于 02-08 12:38
?101次下載
利用FFT IP Core實現FFT算法
利用FFT IP Core實現FFT算法
摘要:結合工程實踐,介紹了一種利用FFT IP Core實現FFT的方法,設計能同時對兩路實數序列進行256點
發表于 01-16 10:04
?6920次閱讀
Vivado中FFT IP核的使用教程
本文介紹了Vidado中FFT IP核的使用,具體內容為:調用IP核>>配置界面介紹>>IP核端口介紹>>MATLAB生成測試數據>>測試verilogHDL>>TestBench仿真>>結果驗證>>
評論