赞
踩
本栏前两节经典谱估计中提到:经典谱估计下,方差和分辨率是一对矛盾。这是因为经典谱估计将数据进行了加窗,自相关法还对自相关进行了加窗(二次加窗),这就让我们想到把原始数据藏在一个系统H(Z)中,让这个系统包含这组数据的特性,这样一来,系统中的系数就可以表示系统反映的数据。这就是现代功率谱密度估计-参数模型法的思想。按照书本的就是先根据数据的自相关函数r(m)求出H(Z)系数,再通过H(Z)进行谱估计。
参数模型法有AR,MA,ARMA模型,其性质为:
AR | MA | ARMA | |
---|---|---|---|
H(Z) | |||
线性/非线性 | 线性 | 非线性 | 非线性 |
反映频谱特性 | 峰值 | 谷值 | 兼顾 |
由于AR模型是线性方程,也可以等效预测模型,所以AR模型远比另外两种实用,所以本文只梳理和仿真了AR模型。
首先模型中令输入是白噪声,需要求解H(Z)的系数也就是ak,k=1,2…p。也就是要通过数据的自相关与ak的关系进行求解,也就是需要通过正则方程(Yule-Walker方程),正则方差的推导过程如下:
其中,正则方差可以用Lecinson-Durbin递推快速算法计算,也就是自相关法的方法。后面还会说其他的方法以及比较。
并且在预测模型中,二者系统的系数是相等的,其最小误差等效于AR模型输入端白噪声的方差。其关系如下:
比较常见的有刚刚提及的自相关法,还有burg法和改进后的协方差法,它们之间的区别如下:
自相关法 | burg法 | 改进后的协方差法 | |
---|---|---|---|
预测方式 | 前向预测 | 前后向预测 | 前向预测 |
加窗 | 前后加窗 | 前后都不加窗 | 前后都不加窗 |
Levinson递推算法 | 可以使用 | 可以使用 | 不可使用 |
除此之外,还有常会用到的最大熵谱估计,由于数据可能相对于原始数据还是有截短。之前的经典谱估计是将两边直接为零,而这里是将两边加上最随机的数,也就是最大熵的准则。
为了和经典功率谱估计比较,采用的原数据和前两节经典功率谱估计一样的,仿真采取的阶数均为50
%%现代功率谱估计的一些方法 clear all; clc;close all;clear; N=200; Nfft=20000; Fs=1; n=0:N-1; x=cos(0.3*pi*n)+cos(0.32*pi*n)+0.1*randn(size(n)); fn=-0.5:2/N:0.5; figure; %% burg法 % 使用 Burg 算法得到功率谱估计; xpsd=pburg(x,50,N); pmax=max(xpsd); xpsd=xpsd/pmax; xpsd=10*log10(xpsd+0.000001); subplot(221); plot(fn,fftshift(xpsd));grid on;title('burg法'); %% 协方差法 xpsd=pcov(x,50,N); pmax=max(xpsd); xpsd=xpsd/pmax; xpsd=10*log10(xpsd+0.000001); subplot(222); plot(fn,fftshift(xpsd));grid on;title('协方差法'); %% 协方差的改进法 xpsd=pmcov(x,50,N); pmax=max(xpsd); xpsd=xpsd/pmax; xpsd=10*log10(xpsd+0.000001); subplot(223); plot(fn,fftshift(xpsd));grid on;title('改进的协方差法'); %% 最大熵法 xpsd=pmem(x,50,N); pmax=max(xpsd); xpsd=xpsd/pmax; xpsd=10*log10(xpsd+0.000001); subplot(224); plot(fn,fftshift(xpsd));grid on;title('最大熵法'); %% 自相关 figure; % 使用自相关矩阵分解的 MUSIC 算法得到功率谱估计; xpsd=pmusic(x',50,N); pmax=max(xpsd); xpsd=xpsd/pmax; xpsd=10*log10(xpsd+0.000001); subplot(311); plot(fn,fftshift(xpsd));grid on;title('自相关矩阵分解的MUSIC算法'); % 使用自相关矩阵分解的特征向量算法得到功率谱估计; [xpsd,F,V,E]=peig(x',50,N); pmax=max(xpsd); xpsd=xpsd/pmax; xpsd=10*log10(xpsd+0.000001); subplot(312); plot(fn,fftshift(xpsd));grid on;title('自相关矩阵分解的特征向量算法'); % 使用自相关法得到功率谱估计; xpsd=pyulear(x,50,N); pmax=max(xpsd); xpsd=xpsd/pmax; xpsd=10*log10(xpsd+0.000001); subplot(313); plot(fn,fftshift(xpsd));grid on;title('自相关法');
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。