matlab实现经典功率谱估计fft做出来是频谱,psd做出来是功率谱;功率谱丢失了频谱的相位信息;频谱不同的信号其功率谱是可能相同的;功率谱是幅度取模后平方,结果是个实数matlab中自功率谱密度直接用psd函数就可以求,按照matlab的说法,psd能实现Welch法估计,即相当于用改进的平均周期图法来求取随机信号的功率谱密度估计。psd求出的结果应该更光滑吧。1、直接法:直接法又称周期图法,它是把随机序列x
的N个观测数据视为一能量有限的序列,直接计算x
的离散傅立叶变换,得Xk,然后再取其幅值的平方,并除以N,作为序列x
真实功率谱的估计。Matlab代码示例:clearFs1000采样频率
01Fs1产生含有噪声的序列x
cos2pi40
3cos2pi100
ra
d
size
wi
dowboxcarle
gthx
矩形窗
fft1024Pxxfperiodogramx
wi
dow
fftFs直接法plotf10log10Pxx
2、间接法:间接法先由序列x
估计出自相关函数R
,然后对R
进行傅立叶变换,便得到x
的功率谱估计。Matlab代码示例:clearFs1000采样频率
01Fs1产生含有噪声的序列x
cos2pi40
3cos2pi100
ra
d
size
fft1024cx
xcorrx
u
biased计算序列的自相关函数CXkfftcx
fftPxxabsCXki
dex0rou
d
fft21ki
dexFs
fft
fplot_Pxx10log10Pxxi
dex1plotkplot_Pxx
3、改进的直接法:对于直接法的功率谱估计,当数据长度N太大时,谱曲线起伏加剧,若N太小,谱的分辨率又不好,因此需要改进。31、Bartlett法Bartlett平均周期图的方法是将N点的有限长序列x
分段求周期图再平均。Matlab代码示例:clear;Fs1000
01Fs1x
cos2pi40
3cos2pi100
ra
d
size
fft1024wi
dowboxcarle
gth
矩形窗
overlap0数据无重叠p09置信概率PxxPxxcpsdx
fftFswi
dow
overlappi
dex0rou
d
fft21ki
dexFs
fftplot_Pxx10log10Pxxi
dex1plot_Pxxc10log10Pxxci
dex1figure1plotkplot_Pxxpausefigure2plotkplot_Pxxplot_Pxxplot_Pxxcplot_Pxxplot_Pxxc
32、Welch法Welch法对Bartlett法进行了两方面的修正,一是选择适当的窗函数w
,并再周期图计算前直接加进去,加窗的优点是无论什么样的窗函数均可使谱估计非负。二是在分段时,可使各段之间有重叠,这样会使方差减小。Matlab代码示例:clearFs1000
01Fs1
fx
cos2pi40
3cos2pi100
ra
d
size
fft1024wi
dowboxcar100矩形窗wi
dow1hammi
g100海明窗wi
dow2blackma
100blackma
窗
overlap20数据无重叠ra
gehalf频率间隔为0Fs2,只计算一半的频率Pxxfpwelchx
wi
dow
overlap
fftFsra
gePxx1fpwelchx
wi
dow1
overlap
fftr