现代信号处理-经典功率谱估计<改进后>

提示:《改进后》是基于《改进前》的后续

前言

在周期图法和BT法中,功率谱估计的原信号设为高斯白噪声,因为BT法必须用在广义平稳随机过程,所以现有的函数只有周期图法的函数,所以前半部分中,两种方法我都用单一样本表示,改进前的matlab程序全都是从原始公式开始写,这样可以更方便地了解两种方法的内部过程。最后也会给出功率谱估计的质量:偏差和方差。

而在改进方法中,我们直接用Pwelch函数来实现分段的周期图法;而由于没有直接的分段的BT法公式(可能是因为BT法只能用在广义平稳过程中,又或者BT法效果没有周期法好),所以在单一样本的基础上,先进行分段处理,每段再各自利用BT法处理,最后再求平均,来实现分段的BT法。第三个方法是利用MTM法来实现分辨率和方差的平衡。

一、功率谱估计方法(改进前)

1.周期图法

2.BT法

3.周期图法和BT法的关系

4.功率谱估计的质量

改进前的这些谱估计方法在上一节已描述,本节介绍改进方法。


二、功率谱估计的改进

分段方法主要分为两大类:Bartlett平均法和Welch平均法。Bartlett平均法是不重叠的分段法,而Welch平均法是重叠的分段法。
1.基于周期图法下的分段方法可以利用Pwelch函数来描述,
也有的程序会用psd函数,但我help了一下,显示如下,说明还是以pwelch函数为主吧!
在这里插入图片描述
2.基于BT法的分段方法没有可以直接调用的函数,本文结合BT法和两种分段法从基础公式来分析,也顺便了解一下非重叠分段和重叠分段的区别。

为了对比各个方法,以下程序的基础都建立在x有20000个点,
FFT个数为20000点,Fs=1; n=0:N-1,且公式为:
x=cos(0.3*pi*n)+cos(0.32*pi*n)+randn(size(n));

1.Pwelch法(周期图法下的分段方法)

此方法是可以直接调用函数Pwelch,本文调用的是:
[pxx,f] = pwelch(x,window,noverlap,Nfft,Fs)
其中输入参数的涵义是:

  • x:被估计的信号

  • window:为了使功率谱变得平滑而加的窗函数,默认hamming窗
    窗函数查询

  • noverlap:表示两段之间的重叠个数

  • Nfft:表示fft的点数,Nfft> X,默认值为256点

  • Fs:表示采样频率,实际频率f(Hz)/Fs=归一化频率w(rad/s)/2pi

输出参数:

  • pxx:功率谱
  • f:横坐标,范围[0 pi*Fs]

若想查看其他形式,help一下即可。

如果使用boxcar窗,并且NOVERLAP=0,则可得到Bartlett法的平均周期图。

%% 周期图法的分段方法
clc;close all;clear;
N=20000; Nfft=20000; Fs=1; n=0:N-1;
x=cos(0.3*pi*n)+cos(0.32*pi*n)+randn(size(n));
M=256;                  %%注意M的取值,过小时会导致分别率过小
%% Bartlett平均法
window1=boxcar(M); noverlap1=0;        
figure;
subplot(2,1,1);
[Pxx1,f]=pwelch(x,window1,noverlap1,Nfft);
plot(f/pi,Pxx1);grid on;title('基于周期图法的Bartlett平均法');
%为了方便看出线谱位置(pi前面的系数),将f除以pi。
%如果使用boxcar窗,且NOVERLAP=0,则可得到Bartlett法的平均周期图
%% Welch平均
window2=hamming(M); noverlap2=M/2;
[Pxx2,f]=pwelch(x,window2,noverlap2,Nfft);
subplot(2,1,2);
plot(f/pi,Pxx2);grid on;title('基于周期图法的Bartlett平均法');

在这里插入图片描述
这里值得注意的是:不能将窗函数的点数设太小,否则可能导致分辨率过小导致分辨不出这两个频率。当M=64,结果如下:
在这里插入图片描述

2.BT法下的分段方法

由于没有基于BT法的分段函数,以下是人为将其分段,再将结果做平均。为了做一组对照实验,还加入了一组不分段的数(但是这个数用的是分段后的其中一段,其实在点数是不公平的,分辨率会不如点数多的情况,但点数多了方差又会很大)。

%% BT法的分段方法
clc;clear all;close all;
N=20000;              %%当分段数不多时,可能分辨率不够,将增大N点即可
K=200;                %%分段数目
M=N/K;                %%每段的采样点数
n=1:N;
x1=cos(0.3*pi*n)+cos(0.32*pi*n)+randn(size(n));
for k=1:K
    x(k,:)=x1(M*k-M+1:M*k);
end
%% Bartlett平均法
for i=1:K
    [rx_BT(i,:),lags]=xcorr(x(i,:),'coeff');
    sf_BT(i,:)=fftshift(abs(fft(rx_BT(i,:))));
end
rx_BT_AV=sum(rx_BT)/K;
sf_BT_AV=sum(sf_BT)/K;
lags1=lags/M;       %%使横轴为单位为[0 0.5]
figure;
subplot(3,2,1);
plot(lags,rx_BT(1,:));title('未分段的自相关函数');
subplot(3,2,2);
plot(lags1,sf_BT(1,:));title('未分段的功率谱密度');grid on;
axis([0 +inf -inf +inf]);
subplot(3,2,3);
plot(lags,rx_BT_AV);title('基于BT法的Bartlett分段平均的自相关函数');
subplot(3,2,4);
plot(lags1,sf_BT_AV);title('基于BT法的Bartlett分段平均的功率谱密度');grid on;
axis([0 +inf -inf +inf]);

%% Welch平均
for i=1:1:K-1
    [rx_BT1(2*i-1,:),lags]=xcorr(x(i,:),'coeff');
    [rx_BT1(2*i,:),lags]=xcorr([x(i,M/2+1:M),x(i+1,1:M/2)],'coeff');
end
    [rx_BT1(2*K-1,:),lags]=xcorr(x(K,:),'coeff');
    [rx_BT1(2*K,:),lags]=xcorr([x(K,M/2+1:M),x(1,1:M/2)],'coeff');   
for i=1:2*K
        sf_BT1(i,:)=fftshift(abs(fft(rx_BT1(i,:))));
end
rx_BT1_AV=sum(rx_BT1)/(2*K);
sf_BT1_AV=sum(sf_BT1)/(2*K);
subplot(3,2,5);
plot(lags,rx_BT1_AV);title('基于BT法的Welch分段平均的自相关函数');
subplot(3,2,6);
plot(lags1,sf_BT1_AV);title('基于BT法的Welch分段平均的功率谱密度');grid on;
axis([0 +inf -inf +inf]);

在这里插入图片描述

3.MTM法

MTM法也称多窗口法,它没有使用带通滤波器,而是使用一组最优滤波器来计算估计值,这些最优FIR滤波器是由一组离散扁平类球体序列(DPSS,也叫Slepian)得到的。
在函数中,MTM提供了一个时间-带宽参数(时间和带宽的乘积NM),我们可以用它来平衡方差和分辨率。NM越大,会有更多的功率谱估计值,方差会越小。每一组数据都可以根据自己的需求,找到最适合的参数来平衡方差和分辨率。

%% MTM法
clc;clear all;close all;
N=20000; Nfft=20000; Fs=1; n=0:N-1;
x=cos(0.3*pi*n)+cos(0.32*pi*n)+randn(size(n));
[pxx1,f]=pmtm(x,4,Nfft,Fs);
figure;
subplot(2,1,1);plot(f,pxx1);title('多窗口法(MTM)NW=4');grid on;
[pxx2,f]=pmtm(x,2,Nfft,Fs);
subplot(2,1,2);plot(f,pxx2);title('多窗口法(MTM)NW=2');grid on;

在这里插入图片描述

总结

可以根据以上三种方法的功率谱看出:
1.基于BT法的估计质量最差(怪不得没有函数表示基于BT法),并且当N减小到2000,不能分别出两个频率(可以复制后改值验证)。MTM法的估计质量最优。
2.Bartlett平均法和Welch平均法分段段数不同,但是效果相差不是很大,但是pwelch函数里窗函数的点数会影响分辨率。

  • 9
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
线估计是数字信号处理中一种常用的信号估计方法。它是从时域信号出发,通过对信号进行傅里叶变换来估计信号的频。线估计可以用于分析非平稳信号、具有漂移或者变频特性的信号。 线估计的核心算法是自相关函数和傅里叶变换。首先,通过计算信号的自相关函数,可以获取信号的自相关性信息。然后,对自相关函数进行傅里叶变换,得到信号功率密度。功率密度描述了信号在不同频率上的能量分布,可以用来揭示信号的频域特性。 线估计在许多领域中都有广泛的应用。在通信领域,线估计可以用于频分析、信号调制识别和多路径衰减估计等。在声音处理领域,线估计可以用于音频信号的特征提取和音乐信号分析等。在图像处理领域,线估计可以用于图像压缩和图像恢复等。 线估计也存在一些问题和挑战。首先,由于离散信号的取样导致了频的混迭效应,使得线估计可能存在分辨率不足的问题。其次,非平稳信号的频会随时间的变化而改变,这就需要采用适应性的线估计方法来估计信号的频。另外,在实际应用中,还需要关注算法的计算效率和实时性。 总之,线估计是一种重要的信号估计方法,可用于分析非平稳信号的频域特性。通过合理选择算法和参数,线估计可以为信号处理和分析提供准确、可靠的频信息,为实际应用提供有效的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值