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