下面几节讨论<一个href="//www.tatmou.com/in/in/help/signal/ug/nonparametric-methods.html" class="intrnllnk">周期图一个>,<一个href="//www.tatmou.com/in/in/help/signal/ug/nonparametric-methods.html" class="intrnllnk">改进的周期图一个>,<一个href="//www.tatmou.com/in/in/help/signal/ug/nonparametric-methods.html" class="intrnllnk">韦尔奇一个>,<一个href="//www.tatmou.com/in/in/help/signal/ug/nonparametric-methods.html" class="intrnllnk">多窗口一个>非参数估计的方法,以及相关的<一个href="//www.tatmou.com/in/in/help/signal/ug/nonparametric-methods.html" class="intrnllnk">运行CPSD函数一个>,<一个href="//www.tatmou.com/in/in/help/signal/ug/nonparametric-methods.html" class="intrnllnk">传递函数估计一个>,<一个href="//www.tatmou.com/in/in/help/signal/ug/nonparametric-methods.html" class="intrnllnk">相干函数一个>.
一般来说,估计过程PSD的一种方法是简单地找到过程样本的离散时间傅里叶变换(通常在带有FFT的网格上完成),并适当缩放结果的大小平方。这个估计被称为<年代pan class="emphasis">周期图年代pan>.
信号PSD的周期图估计<年代pan class="inlineequation"> 的长度<年代pan class="emphasis">l年代pan>是
其中Fs为采样频率。
在实践中,实际的计算<年代pan class="inlineequation"> 只能在有限数量的频率点上执行,通常采用FFT。周期图方法的大多数实现计算<年代pan class="inlineequation"> -点PSD估计频率
在某些情况下,如果频率数是2的幂,通过FFT算法计算周期图的效率更高。因此,用零填充输入信号以将其长度扩展到2的幂是很常见的。
作为周期图的一个例子,考虑下面的1001元素信号xn
,由两个正弦波加上噪声组成:
Fs = 1000;<年代pan style="color:#228B22">采样频率年代pan>T = (0:fs)/fs;<年代pan style="color:#228B22">一秒钟的样本年代pan>A = [1 2];<年代pan style="color:#228B22">%正弦振幅(行向量)年代pan>F = [150;140];<年代pan style="color:#228B22">%正弦波频率(列向量)年代pan>xn = A*sin(2*pi*f*t) + 0.1*randn(size(t));<年代pan style="color:#228B22">最后三行等于年代pan>% xn =罪(2 *π* 150 * t) + 2 *罪(2 *π* 140 * t) + 0.1 * randn(大小(t));年代pan>
PSD的周期图估计可以用周期图
.在这种情况下,将数据向量与汉明窗口相乘以产生修改的周期图。
[Pxx,F] = periodogram(xn,hamming(length(xn)),length(xn),fs);情节(F, 10 * log10 (Pxx))包含(<年代pan style="color:#A020F0">“赫兹”年代pan>) ylabel (<年代pan style="color:#A020F0">“数据库”年代pan>)标题(<年代pan style="color:#A020F0">“修正周期图功率谱密度估计”年代pan>)
算法年代trong>
周期图计算并缩放FFT的输出,以产生如下的功率与频率图。
如果输入信号是实值,则产生的FFT的大小相对于零频率(DC)是对称的。对于偶数长度的FFT,只有第一个(1 +nfft
/2)点是唯一的。确定唯一值的数量,并只保留那些唯一的点。
取唯一FFT值的大小的平方。将模的平方(DC除外)乘以<年代pan class="inlineequation"> ,在那里<年代pan class="emphasis">N年代pan>是信号在任何零填充之前的长度。按比例缩放DC值<年代pan class="inlineequation"> .
从唯一点的数量,nfft和采样频率创建一个频率向量。
绘制结果的幅度平方FFT对频率。
下面几节将讨论周期图在泄漏、分辨率、偏差和方差等问题上的性能。
频谱泄漏年代trong>
考虑一个有限长度(长度<年代pan class="inlineequation"> )信号<年代pan class="inlineequation"> .解释通常是有用的<年代pan class="inlineequation"> 作为一个无穷大信号相乘的结果,<年代pan class="inlineequation"> ,通过一个有限长度的矩形窗口,<年代pan class="inlineequation"> :
因为时域的乘法对应于频域的卷积,所以周期图在频域的期望值为
表明周期图的期望值是真实PSD与Dirichlet核的平方的卷积。
卷积的影响是最好的理解正弦数据。假设<年代pan class="inlineequation"> 是由的和组成的<年代pan class="inlineequation"> 复杂的正弦曲线:
它的光谱是
对于一个有限长度的序列,它会变成什么
上式等于
所以在有限长度信号的频谱中,狄拉克δ已经被这种形式的项所取代<年代pan class="inlineequation"> ,对应于以频率为中心的矩形窗口的频率响应<年代pan class="inlineequation"> .
矩形窗口的频率响应具有周期性sinc的形状:
L = 32;[h,w] = freqz(rectwin(L)/L,1);y = diric(w,L);情节(w /π,20 * log10 (abs (h)))<年代pan style="color:#A020F0">在年代pan>情节(w /π,20 * log10 (abs (y)),<年代pan style="color:#A020F0">“——”年代pan>)举行<年代pan style="color:#A020F0">从年代pan>ylim([-40,0])传说(<年代pan style="color:#A020F0">的频率响应年代pan>,<年代pan style="color:#A020F0">“周期性Sinc”年代pan>)包含(<年代pan style="color:#A020F0">“\omega / \pi”年代pan>)
图中显示了一个主瓣和几个旁瓣,最大的旁瓣在主瓣峰值以下约13.5 dB。这些裂片解释了所谓的光谱泄漏效应。而无限长信号的功率恰好集中在离散的频率点上<年代pan class="inlineequation"> ,加窗(或截断)信号在离散频率点周围有连续的功率“泄漏”<年代pan class="inlineequation"> .
由于短矩形窗口的频率响应与狄拉克函数的近似比长窗口差得多,当数据记录较短时,频谱泄漏尤其明显。考虑以下100个样本的序列:
Fs = 1000;<年代pan style="color:#228B22">采样频率年代pan>T = (0:fs/10)/fs;<年代pan style="color:#228B22">十分之一秒的样本年代pan>A = [1 2];<年代pan style="color:#228B22">%正弦振幅年代pan>F = [150;140];<年代pan style="color:#228B22">%正弦频率年代pan>xn = A*sin(2*pi*f*t) + 0.1*randn(size(t));周期图(xn rectwin(长度(xn)), 1024年,fs)
值得注意的是,频谱泄漏的影响仅取决于数据记录的长度。这不是周期图是在有限数量的频率样本上计算的结果。
决议年代trong>
决议年代pan>指的是分辨光谱特征的能力,是分析光谱估计器性能的一个关键概念。
为了解析两个频率上相对接近的正弦信号,必须使两个频率之间的差值大于其中任何一个正弦信号泄漏光谱的主瓣宽度。主瓣宽度定义为功率为主瓣峰值功率一半处的主瓣宽度(即3db宽度)。这个宽度大约等于<年代pan class="inlineequation"> .
换句话说,对于两个频率的正弦信号<年代pan class="inlineequation"> 而且<年代pan class="inlineequation"> ,可解性条件要求
在上面的例子中,两个正弦波之间仅相隔10hz,数据记录必须大于100个样本,才能通过周期图分辨出两个不同的正弦波。
考虑一个不满足此标准的情况,如下面的67个样本序列:
Fs = 1000;<年代pan style="color:#228B22">采样频率年代pan>T = (0:fs/15)/fs;<年代pan style="color:#228B22">67%样品年代pan>A = [1 2];<年代pan style="color:#228B22">%正弦振幅年代pan>F = [150;140];<年代pan style="color:#228B22">%正弦频率年代pan>xn = A*sin(2*pi*f*t) + 0.1*randn(size(t));周期图(xn rectwin(长度(xn)), 1024年,fs)
上述关于分辨率的讨论没有考虑噪声的影响,因为到目前为止信噪比(SNR)比较高。当信噪比较低时,真正的光谱特征很难区分,并且在基于周期图的光谱估计中出现噪声伪影。下面的例子说明了这一点:
Fs = 1000;<年代pan style="color:#228B22">采样频率年代pan>T = (0:fs/10)/fs;<年代pan style="color:#228B22">十分之一秒的样本年代pan>A = [1 2];<年代pan style="color:#228B22">%正弦振幅年代pan>F = [150;140];<年代pan style="color:#228B22">%正弦频率年代pan>xn = A*sin(2*pi*f*t) + 2*randn(size(t));周期图(xn rectwin(长度(xn)), 1024年,fs)
周期图的偏倚年代trong>
周期图是PSD的有偏估计量。它的期望值是
周期图是渐近无偏的,从前面的观察可以明显看出,随着数据记录长度趋于无穷大,矩形窗口的频率响应更接近狄拉克函数。然而,在某些情况下,即使数据记录较长,周期图也不能很好地估计PSD。这是由于周期图的变化,如下所述。
周期图的变化年代trong>
周期图的方差可以表示为
这表明方差不趋向于零的数据长度<年代pan class="inlineequation"> 趋于无穷。在统计学方面,周期图不是PSD的一致估计量。尽管如此,在信噪比高的情况下,特别是如果数据记录很长,周期图可以是谱估计的有用工具。
的<年代pan class="emphasis">改进的周期图年代pan>在计算DFT之前对时域信号进行窗口处理,以平滑信号的边缘。这有降低旁瓣高度或谱泄漏的效果。这种现象引起了对旁瓣的解释,即当使用矩形窗口时,由于突然截断而引入信号的杂散频率。对于非矩形窗口,截断信号的端点平滑衰减,因此引入的杂散频率不那么严重。另一方面,非矩形窗口也会使主瓣变宽,从而导致分辨率降低。
的周期图
允许您通过指定要在数据上使用的窗口来计算修改后的周期图。例如,比较一个默认的矩形窗口和一个汉明窗口。在这两种情况下指定相同数量的DFT点。
Fs = 1000;<年代pan style="color:#228B22">采样频率年代pan>T = (0:fs/10)/fs;<年代pan style="color:#228B22">十分之一秒的样本年代pan>A = [1 2];<年代pan style="color:#228B22">%正弦振幅年代pan>F = [150;140];<年代pan style="color:#228B22">%正弦频率年代pan>NFFT = 1024;xn = A*sin(2*pi*f*t) + 0.1*randn(size(t));周期图(xn rectwin(长度(xn)), nfft, fs)
周期图(xn汉明(长度(xn)), nfft, fs)
您可以验证,虽然旁瓣在汉明窗周期图中不太明显,但两个主峰更宽。事实上,汉明窗对应的主瓣的3db宽度大约是矩形窗的两倍。因此,对于固定的数据长度,使用汉明窗口获得的PSD分辨率大约是使用矩形窗口获得的分辨率的一半。主瓣宽度和副瓣高度的相互竞争可以通过使用可变窗口如Kaiser窗口在一定程度上得到解决。
非矩形加窗会影响信号的平均功率,因为一些时间样本在乘以窗口时会衰减。为了弥补这一点,周期图
而且pwelch
将窗口规范化,使其具有平均的统一力量。这保证了测量的平均功率通常独立于窗口选择。如果PSD估计器不能很好地解析频率分量,那么窗口的选择确实会影响平均功率。
PSD的修正周期图估计为
在哪里<年代pan class="emphasis">U年代pan>是窗口归一化常数:
对于较大的值l
,U
趋于与窗口长度无关。加上U
作为归一化常数,保证了修正周期图渐近无偏。
一种改进的PSD估计量是Welch提出的。该方法包括将时间序列数据分成(可能重叠)段,计算每个段的修改周期图,然后平均PSD估计值。结果就是韦尔奇的PSD估计。工具箱函数pwelch
实现了韦尔奇的方法。
修正周期图的平均倾向于减少估计的方差,相对于整个数据记录的单个周期图估计。虽然片段之间的重叠会引入冗余信息,但使用非矩形窗口会减少这种影响,从而降低了重要性<年代pan class="emphasis">重量年代pan>给定段的末端样本(重叠的样本)。
然而,如上所述,短数据记录和非矩形窗口的组合使用导致估计器的分辨率降低。总之,在方差减少和解决之间有一个权衡。人们可以操纵韦尔奇方法中的参数,以获得相对于周期图的改进估计,特别是当信噪比较低时。下面的例子说明了这一点。
考虑一个由301个样本组成的信号:
Fs = 1000;<年代pan style="color:#228B22">采样频率年代pan>T = (0:0.3*fs)/fs;<年代pan style="color:#228B22">% 301个样品年代pan>A = [2 8];<年代pan style="color:#228B22">%正弦振幅(行向量)年代pan>F = [150;140];<年代pan style="color:#228B22">%正弦波频率(列向量)年代pan>xn = A*sin(2*pi*f*t) + 5*randn(size(t));周期图(xn rectwin(长度(xn)), 1024年,fs)
我们可以用矩形窗口得到重叠50%的3段韦尔奇谱估计。
pwelch (xn rectwin(150), 50512年,fs)
在上面的周期图中,噪声和泄漏使得其中一个正弦信号基本上无法与人工峰值区分开来。相比之下,尽管韦尔奇方法产生的PSD具有更宽的峰值,但您仍然可以区分出两个从“噪声地板”中脱颖而出的正弦波。
然而,如果我们试图进一步减少方差,分辨率的损失会导致一个正弦信号完全丢失。
pwelch (xn rectwin(100), 75512年,fs)
韦尔奇的方法产生PSD的偏估计。PSD估计的期望值为:
在哪里
韦尔奇估计量的方差很难计算,因为它取决于所使用的窗口和段之间的重叠量。基本上,方差与被平均的修改周期图的段数成反比。
周期图可以解释为过滤一个长度<年代pan class="inlineequation"> 信号,<年代pan class="inlineequation"> ,通过一个滤波器组(一组滤波器并联)的<年代pan class="inlineequation"> FIR带通滤波器。每个带通滤波器的3db带宽可以显示为大约等于<年代pan class="inlineequation"> .每个带通滤波器的幅值响应类似于矩形窗口的幅值响应。因此,周期图可以被视为每个滤波信号的功率(即每个带通滤波器的输出)的计算,它只使用每个滤波信号的一个样本,并假设的PSD为<年代pan class="inlineequation"> 在每个带通滤波器的带宽上是恒定的。
随着信号长度的增加,每个带通滤波器的带宽减小,使其成为更具选择性的滤波器,并提高了常数PSD在滤波器带宽上的近似值。这提供了另一种解释,为什么周期图的PSD估计随着信号长度的增加而改善。然而,从这个角度来看,有两个明显的因素损害了周期图估计的准确性。首先,矩形窗口的带通滤波器性能较差。其次,每个带通滤波器输出功率的计算依赖于输出信号的单个样本,产生一个非常粗略的近似。
韦尔奇的方法可以在滤波器组方面给出类似的解释。在Welch的实现中,使用了几个样本来计算输出功率,从而减少了估计的方差。另一方面,每个带通滤波器的带宽都比周期图方法对应的带宽大,导致分辨率下降。因此,滤波器组模型为方差和分辨率之间的折衷提供了一种新的解释。
汤普森的<年代pan class="emphasis">多窗口方法年代pan>(MTM)建立在这些结果的基础上,以提供改进的PSD估计。MTM方法使用一组最优带通滤波器来计算估计值,而不是使用本质上是矩形窗口的带通滤波器(如在周期图方法中)。这些最优FIR滤波器来自一组序列,称为离散长球状序列(DPSSs,也称为长球状序列)<年代pan class="emphasis">斯莱皮恩序列年代pan>).
此外,MTM方法还提供了一个时间-带宽参数来平衡方差和分辨率。该参数由时间-带宽乘积给出,<年代pan class="inlineequation"> 它与用于计算频谱的锥数直接相关。总会有<年代pan class="inlineequation"> 细度用来形成估算。这意味着,作为<年代pan class="inlineequation"> 功率谱的估计值越大,估计的方差就越小。然而,每个锥度的带宽也成正比<年代pan class="inlineequation"> ,因此<年代pan class="inlineequation"> 增加,每个估计显示更多的光谱泄漏(即,更宽的峰值)和整体光谱估计更偏向。对于每个数据集,通常都有一个值<年代pan class="inlineequation"> 这允许偏差和方差之间的最佳权衡。
实现MTM方法的信号处理工具箱™函数是pmtm
.使用pmtm
来计算信号的PSD。
Fs = 1000;<年代pan style="color:#228B22">采样频率年代pan>T = (0:fs)/fs;<年代pan style="color:#228B22">一秒钟的样本年代pan>A = [1 2];<年代pan style="color:#228B22">%正弦振幅年代pan>F = [150;140];<年代pan style="color:#228B22">%正弦频率年代pan>xn = A*sin(2*pi*f*t) + 0.1*randn(size(t));pmtm (xn 4 [], fs)
通过降低时间-带宽乘积,您可以以更大的方差为代价来提高分辨率。
pmtm (xn 1.5, [], fs)
由于该方法需要大量的离散长球序列的计算,因此计算成本比Welch方法高。对于较长的数据序列(10,000点或更多),计算一次DPSSs并将其保存在mat文件中是很有用的。dpsssave
,dpssload
,dpssdir
,dpssclear
提供了一个保存在mat文件中的DPSSs数据库dpss.mat
.
PSD是一种特殊情况<年代pan class="emphasis">交叉谱密度年代pan>(CPSD)函数,定义在两个信号之间
正如相关和协方差序列的情况一样,工具箱<年代pan class="emphasis">估计年代pan>PSD和CPSD,因为信号长度是有限的。
估计两个等长信号的交叉谱密度x
而且y
使用韦尔奇的方法<一个href="//www.tatmou.com/in/in/help/signal/ref/cpsd.html">运行cpsd
的FFT的乘积形成周期图x
的FFT的共轭y
.与实值PSD不同,CPSD是一个复函数。运行cpsd
的切片和窗口x
而且y
以同样的方式pwelch
功能:
Sxy = cpsd(x,y,nwin, nooverlap,nfft,fs)
韦尔奇方法的一个应用是非参数系统辨识。假设<年代pan class="emphasis">H年代pan>是线性时不变系统吗<年代pan class="emphasis">x年代pan>(<年代pan class="emphasis">n年代pan>),<年代pan class="emphasis">y年代pan>(<年代pan class="emphasis">n年代pan>的输入和输出<年代pan class="emphasis">H年代pan>,分别。的功率谱<年代pan class="emphasis">x年代pan>(<年代pan class="emphasis">n年代pan>)与CPSD有关<年代pan class="emphasis">x年代pan>(<年代pan class="emphasis">n年代pan>),<年代pan class="emphasis">y年代pan>(<年代pan class="emphasis">n年代pan>)
之间传递函数的估计<年代pan class="emphasis">x年代pan>(<年代pan class="emphasis">n年代pan>),<年代pan class="emphasis">y年代pan>(<年代pan class="emphasis">n年代pan>)是
这种方法同时估计幅度和相位信息。的tfestimate
函数采用Welch的方法计算CPSD和功率谱,然后形成它们的商进行传递函数估计。使用tfestimate
就像你用运行cpsd
函数。
生成嵌入白高斯噪声的两个正弦波组成的信号。
rng (<年代pan style="color:#A020F0">“默认”年代pan>) fs = 1000;<年代pan style="color:#228B22">采样频率年代pan>T = (0:fs)/fs;<年代pan style="color:#228B22">一秒钟的样本年代pan>A = [1 2];<年代pan style="color:#228B22">%正弦振幅年代pan>F = [150;140];<年代pan style="color:#228B22">%正弦频率年代pan>xn = A*sin(2*pi*f*t) + 0.1*randn(size(t));
过滤信号xn
使用FIR移动平均滤波器。计算实际震级响应和估计响应。
H = ones(1,10)/10;<年代pan style="color:#228B22">移动平均过滤器年代pan>Yn = filter(h,1,xn);[HEST,f] = tfestimate(xn,yn,256,128,256,fs);H = freqz(H,1,f,fs);
画出结果。
subplot(2,1,1) plot(f,abs(H))<年代pan style="color:#A020F0">“实际传递函数大小”年代pan>) yl = ylim;网格subplot(2,1,2) plot(f,abs(HEST))<年代pan style="color:#A020F0">“传递函数大小估计”年代pan>)包含(<年代pan style="color:#A020F0">的频率(赫兹)年代pan>) ylim(yl)网格
两个信号之间的平方相干性<年代pan class="emphasis">x年代pan>(<年代pan class="emphasis">n年代pan>),<年代pan class="emphasis">y年代pan>(<年代pan class="emphasis">n年代pan>)是
这个商是一个介于0和1之间的实数,用来衡量之间的相关性<年代pan class="emphasis">x年代pan>(<年代pan class="emphasis">n年代pan>),<年代pan class="emphasis">y年代pan>(<年代pan class="emphasis">n年代pan>)在频率<年代pan class="inlineequation"> .
的mscohere
函数接受序列xn
而且yn
,计算它们的功率谱和CPSD,并返回CPSD的大小平方与功率谱乘积的商。其选项和操作类似于运行cpsd
而且tfestimate
功能。
生成嵌入白高斯噪声的两个正弦波组成的信号。信号以1khz采样1秒。
rng (<年代pan style="color:#A020F0">“默认”年代pan>) fs = 1000;T = (0:fs)/fs;A = [1 2];<年代pan style="color:#228B22">%正弦振幅年代pan>F = [150;140];<年代pan style="color:#228B22">%正弦频率年代pan>xn = A*sin(2*pi*f*t) + 0.1*randn(size(t));
过滤信号xn
使用FIR移动平均滤波器。计算并绘制相干函数xn
以及过滤器输出yn
作为频率的函数。
H = ones(1,10)/10;Yn = filter(h,1,xn);mscohere (xn yn 256128256 fs)
如果输入序列长度、窗口长度和窗口中重叠数据点的数量为mscohere
该函数只对单个记录操作,返回所有记录。这是因为线性相关数据的相干函数为1。
运行cpsd
|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">mscohere
|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">周期图
|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">pmtm
|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">pwelch
|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">tfestimate