【MATLAB信号处理】pwelch函数功率谱密度分析

一.pwelch基本用法

在MATLAB中可以使用pwelch函数实现Welch平均周期法对信号的谱估计结果,pwelch函数中存在较多参数,先看一下MATLAB官网上pwelch()函数的说明文档进行翻译:

几种基本用法:
pxx = pwelch(x)

pxx = pwelch(x,window)

pxx = pwelch(x,window,noverlap)

pxx = pwelch(x,window,noverlap,nfft)

[pxx,w] = pwelch(___)

[pxx,f] = pwelch(___,fs)

[pxx,w] = pwelch(x,window,noverlap,w)

[pxx,f] = pwelch(x,window,noverlap,f,fs)

[___] = pwelch(x,window,___,freqrange)

[___] = pwelch(x,window,___,spectrumtype)

[___] = pwelch(x,window,___,trace)

[___,pxxc] = pwelch(___,'ConfidenceLevel',probability)

      pwelch()函数利用Welch'平均功率图法返回信号x的功率谱密度(PSD)pxx。当x是向量时,它被当做一个单通道信号,当x是矩阵是,x的每一列被当做一个通道的信号,其psd结果相对应与psd的每一列。如果x是实值信号,则pxx是单边谱估计,如果x是复数信号,则pxx是双边谱估计。

      直接使用 pwelch()函数,不定义其他参数的条件下,默认设置x被分成8段,重叠率为50%的片段。每个片段上添加一个hamming窗。

      pwelch利用这种修正后的周期图法来对psd进行估计。当然你不能将x刚好分为满足50%重叠的8个片段,为了实现功能,函数会对x的长队进行相应地自动裁剪。

二.参属意义

每个参数的具体意义的详细说明如下:

X:进行功率谱估计的有限长输入序列;
WINDOW:指定窗函数,默认值为hamming窗;
NFFT:DFT的点数, NFFT> X,默认值为256;
Fs :绘制功率谱曲线的抽样频率,默认值为1;
Pxx:功率谱估计值; 
F:Pxx值所对应的频率点 
NOVERLAP指定分段重叠的样本数 ,如果NOVERLAP=L/2,则可得到重叠50%的Welch法平均周期图 
如果使用boxcar窗,且NOVERLAP=0,则可得到Bartlett法的平均周期图

 [pxx,w] = pwelch(___)返回的是标准化后的频率向量w,如果pxx是单边谱估计,那么w的范围就是0到pi,如果pxx是双边谱估计,那么w的范围就是0到2pi。

 [pxx,f] = pwelch(___,fs)返回一个频率向量f。fs时每个单位时间的样本s,那么f的单位是Hz,那么f的范围是0到fs/2,对于复值信号来说,f的范围是0到fs。且fs必须是pwelch的第五个输入变量,如果为了输入fs,而其他参数使用默认值的话,其他参数可以设置为空[].

三.Matlab测试代码

下面具体举一个例子,输入的信号数据为sig,用[Pxx,f]=pwelch(x,window,noverlap,nfft,fs)这组语法,采样率为10kHz,采用汉宁窗,保证频率分辨率为1Hz,重叠率为0,可得到信号的相位噪声信息:

fs=10000;%采样频率

f0=1;  %分辨率  默认为1

Nfft=fs/f0;%采样点数

window=hanning(sig);  %采用的汉宁窗口

noverlap=0;      %重叠样本数 重叠率设置为0

[pxx,f]=pwelch(sig,window,noverlap,Nfft,fs);

pxx=10*log10(pxx);%pwelch取10倍log10得到噪声

figure;

semilogx(f,pxx)

xlabel('Frequency/Hz')

ylabel('Phase Noise/(dB√Hz)')

grid

​​​​​​​

四.功率谱分析

Welch方法是一种修正周期图功率谱密度估计方法,它通过选取的窗口对数据进行加窗处理,先分段求功率谱之后再进行平均。其中窗口的长度Nfft表示每次处理的分段数据长度,Noverlap是指相邻两段数据之间的重叠部分长度。Nfft越大得到的功率谱分辨率越高(越准确),但方差加大(及功率谱曲线不太平滑);Nfft越小,结果的方差会变小,但功率谱分辨率较低(估计结果不太准确)。其原理是将信号分为多段,每段之间可以有重叠样本数,也可以没有。对每一段加窗并对每一段做谱分析后求平均。

从以上例子可以看出,pwelch里面NFFT,是可以变化的。但是最大长度不能超过每一段的点数。当然,很多情况下我们把NFFT等于每一段的点数,这样可以得到最高的频域分辨率。 如果NFFT = 每一段的一半,频域分辨率低一倍。

Welch法当数据分段数增加,各段数据长度较短时,谱的分辨率明显下降,而谱估计曲线较为平滑,方差较小;反之,当数据分段数减小,各段数据长度较长时,谱分辨率明显提高,而谱估计曲线波动较大,方差较大。
 


版权声明:本文为qq_40579970原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。