文章的内容整理自网络,仅Matlab代码部分进行了部分修正,具体而言:

理论部分来自:现代通信原理2.5:确定信号的能量谱密度、功率谱密度与自相关函数

估计和代码部分来自: 随机信号功率谱密度估计

PS1 推荐使用周期图法进行功率密度谱估计。

PS2 系统学习一下胡广书老师的书!

目录

A、信号的能量谱密度、功率谱密度与自相关函数的理论

B、功率密度谱估计方法介绍

C、Matlab 代码及结果展示


A、信号的能量谱密度、功率谱密度与自相关函数的理论

内容转自现代通信原理2.5:确定信号的能量谱密度、功率谱密度与自相关函数


B、功率密度谱估计方法介绍

下面内容转自 随机信号功率谱密度估计

一、实验目的

1.深入理解随机信号功率谱密度估计

2.掌握在Matlab平台上进行信号功率谱密度估计的基本方法

二、实验原理

1. 随机信号功率谱密度定义

定义随机信号信号的功率谱

其中为随机信号的自相关函数。

功率谱反映了信号的功率在频域随频率分布,因此又称为功率谱密度。[1]

2. 经典谱估计(非参数谱估计)方法简介

经典谱估计的方法主要包括两种方法:周期图法和自相关法。

周期图法[1](直接法)

周期图法又称为直接法,它是把随机信号的N点观察数据视为一个能量有限信号,直接取的傅里叶变换,得,然后再取其幅值的平方,并除于N,作为对真实功率谱的估计。以表示用周期图法估计的功率谱,则

自相关法[1](间接法)

此方法的理论基础是维纳-辛钦定理。1958年Blackman和Tukey 给出了这一种方法的具体实现,即由估计出自相关函数,然后对的功率谱,记之为,并以此作为对的估计,即

因为这种方法求出的功率谱是通过自相关函数间接得到的,所以称为间接法,又称自相关法或BT法。当M较小时,上式计算量不是很大,因此,该方法是在FFT问世之前(即周期图法被广泛应用之前)常用的谱估计方法。

3. 参数模型谱估计方法简介[1]

参数模型法是现代谱估计的主要内容,参数模型法的思路如下。

三、实验步骤

1. 构造模拟信号

构造模拟信号

2. 使用经典谱估计方法对信号进行谱估计

1) 周期图法

Matlab中Prierdogram()函数就是运用周期图法进行谱估计。调用格式如下:

[psdestx,Fxx] = periodogram(xn,rectwin(length(xn)),length(xn),Fs);

其中输入参数xn为待估计的离散信号,rectwin(length(xn))表示窗长为xn点的矩形窗(rectangle window),Fs表示采样频率。

输出参数Fxx表示频率,psdestx为对应Fxx频率的功率谱密度。

为了使周期图法得到的功率谱密度更为平滑,提出了许多改进的方法,Welch平均周期图法就是其中一种,在matlab中pwelch()函数就是使用该方法进行功率谱估计,pwelch()函数的调用格式如下:

pwelch(xn,hamming(256),128,1024,Fs)

输入参数xn为输入信号,hamming(256)为窗长为256的汉明窗,Fs为信号采样频率。调用后可绘制得到信号功率谱密度图,如需要观察得到的功率谱密度数值,可以添加相应的输出参数,相应可以参阅matlab帮助文档。

2) 相关函数法

相关函数法是先求信号是自相关函数,再根据维纳辛欣定理,功率谱密度就是自相关函数的傅里叶变换,对自相关函数求傅里叶变换,得到功率谱密度。

需要用到matlab中xcorr()函数,其调用格式如下:

cx=xcorr(xn,'biased');

其中输入参数xn为待求自相关函数的信号,'biased'表示使用有偏差的自相关函数求法。

输出参数cx即为信号xn的自相关函数。

3. 使用现代谱估计方法对信号进行谱估计

伯格(Brug)谱估计是一种AR谱估计方法,可调用matalb中pburg函数,其调用格式如下:

pburg(xn,5,1024,Fs)

输入参数xn为信号,Fs为采样频率。调用后可绘制得到信号功率谱密度图,如需要观察得到的功率谱密度数值,可以添加相应的输出参数,相应可以参阅matlab帮助文档。

四、实验结果与分析

1. 经典谱估计方法和现代谱估计方法比较

图4.1 不同功率谱估计方法比较

如图4.1所示,对比周期图法(periodogram)和平均周期图法(Welch),验证了Welch法得到的图要比周期图法得到的功率谱密度图光滑。自相关法和周期图法得到的功率谱估计在140Hz和150Hz处锋比较尖锐,频率分辨率要比Welch平均周期图法高。现代AR谱估计Brug方法同样可以在140Hz和150Hz处得到尖锐的谱峰,同时其估计的功率谱密度图也很平滑。

2. AR谱估计中模型阶数对谱估计结果的影响

 (a)  (b)  (c)

图4.2 AR模型阶数对谱估计的影响

(a)5阶 (b)14阶 (c)20阶

如图4.2,对比不同AR模型阶数对功率谱估计的影响,发现阶数较低时,在140Hz-150Hz频率范围左右,只出现一个谱峰,没有得到实际的两个谱峰,频率分辨率不够,随着模型阶数的增加,到阶数达到14时,可以有效地区分140Hz和150Hz处的两个谱峰,有较好的频率分辨率,随着模型阶数的继续增加,在真峰(140Hz和150Hz)附近的假峰会随着增多。

五、实验结论

通过对比经典和现代不同谱估计方法,可以发现,现代谱估计方法既有较好的频率分辨率,又是能使功率谱密度较为平滑,可以很到的得到信号谱峰。

现代AR谱估计中,模型的阶数选择是一个很重要的问题,选择合适的阶数,可以有效的检查出有效信号的谱峰,如果模型阶数过低,则频率分辨率不够,可能会丢失有效信号谱峰,如果模型阶数过高,则可能出现假峰。

六、参考文献

[1] 胡广书. 数字信号处理:理论、算法与实现(第三 版)[M]. 北京:清华大学出版社,2012.


C、Matlab 代码及结果展示

%% 构造模拟信号
clc
clear
close allt = 0:0.001:2;
xn = chirp(t,100,1,200,'quadratic');
Fs = 1/0.001;figure(1)
plot(t,xn);
xlabel('Time(s)')
ylabel('x(t)')%% 周期图法figure(2);
subplot(2,2,1)[psdestx,Fxx] = periodogram(xn,rectwin(length(xn)),length(xn),Fs);plot(Fxx,10*log10(psdestx)); % 其中10*log10(),是dB和功率之间的转换关系!
grid on;
xlabel('Frequency(Hz)'); ylabel('Power/frequency (dB/Hz)');
title('Periodogram Power Spectral Density Estimate');
axis([0 500 -60 10])%% 自相关函数法(BT法)subplot(2,2,2)
cx=xcorr(xn,'biased'); %计算自相关函数
cxdft = fft(cx);
psdx = abs(cxdft)/Fs;
freq = 0:Fs/length(psdx):Fs/2;plot(freq,10*log10(psdx(1:length(freq)))); grid on;
title('AutoCorrelation Power Spectral Density Estimate');
xlabel('Frequency (Hz)'); ylabel('Power/frequency (dB/Hz)');
axis([0 500 -60 10])%% Welch 平均周期法subplot(2,2,3)
pwelch(xn,hamming(256),128,1024,Fs);
axis([0 500 -60 10])%% Burg法 AR参数谱估计figure(2)
subplot(2,2,4)pburg(xn,14,1024,Fs)
axis([0 500 -60 10])
set(gcf,'color',[1 1 1]);%% 讨论不同的AR阶数对Brug法的影响figure(3)
subplot(1,3,1)pburg(xn,5,1024,Fs)axis([0 500 -60 10])
title('Order 5')
subplot(1,3,2)pburg(xn,14,1024,Fs)axis([0 500 -60 10])
title('Order 14')subplot(1,3,3)
pburg(xn,20,1024,Fs)
axis([0 500 -60 10])
title('Order 20')
set(gcf,'color',[1 1 1]);

程序结果

信号图:

各类方法结果对比:

不同的AR阶数对Brug法的影响

随机信号功率谱密度函数理论、估计方法及MATLAB代码相关推荐

  1. MVDR频率估计方法及其Matlab代码实现

    本文同步发布在我的个人博客宅到没朋友,欢迎来玩! 1.前言 M V D R MVDR MVDR频率估计方法的理论知识此处略过,直接介绍最后得到的 M V D R MVDR MVDR谱估计公式. 2. ...

  2. 【图像分割】基于萤火虫优化的半监督谱聚类彩色图像分割方法(Matlab代码实现)

    目录 0 概述 1 萤火虫算法 1.1 思想来源 1.2 数学模型 1.2.1 萤火虫相对荧光亮度 1.2.2 萤火虫吸引度 1.2.3 位置更新 1.3 算法步骤 2 基于萤火虫优化的半监督谱聚类彩 ...

  3. 【信号处理】CFO估计技术(Matlab代码实现)

    目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 针对存在未知载波频偏(CFO)的线性调制分类,提出一种混合似似然比检测(qHLRT)分类器.并且通过使用多天线接收机来进 ...

  4. 基于扩展卡尔曼滤波的SOC估计(附MATLAB代码)

    1.卡尔曼滤波原理 原理可以参考我之前学习的笔记,使用goodnote完成的. 我认为,对于公式的推导不需要做太多深入的了解,我之前也对公式进行推导的理解,但是没过几天就忘了,只需要掌握住那重要的5个 ...

  5. Caputo 分数阶一维问题基于 L1 逼近的空间二阶方法(附Matlab代码)

    Caputo 分数阶一维问题基于 L1 逼近的空间二阶方法 Caputo 分数阶一维问题基于 L1 逼近的快速差分方法(附Matlab程序) 文章目录 Caputo 分数阶一维问题基于 L1 逼近的空 ...

  6. 大连理工大学2022年春季学期优化方法上机 Matlab代码

    大连理工大学2022年春季学期优化方法上机作业前两道题 包含Matlab最速下降法.阻尼牛顿法,共轭方向发(标准形式和FR).DFP.BFGS 2022.04.25 修改,第一题共轭梯度法计算结果正确 ...

  7. 系统辨识的几种方法实现MATLAB代码

    系统辨识,即在已知系统阶次的情况下辨识出系统的参数或辨识系统阶次,一般用到的方法有最小二乘法.辅助变量法等,对于离线与在线辨识,只是加入一个递推的问题.下面本文给出系统辨识方法的实现代码. 首先是处理 ...

  8. 基于自适应扩展卡尔曼滤波器(AEKF)的锂离子电池SOC估计(附MATLAB代码)

    AEKF_SOC_Estimation函数使用二阶RC等效电路模型(ECM)和自适应扩展卡尔曼滤波器(AEKF)估计电池的端电压(Vt)和充电状态(SOC).该函数将以下内容作为输入: · 电流(A) ...

  9. 图像增强的几个方法以及Matlab代码

    1. 灰度线性变换 灰度线性变换, 是一种空域的方法, 直接对每一个像素的灰度值进行操作 假设图像为 I I I 则其中每一个像素点的灰度值为 I ( x , y ) I(x,y) I(x,y) 我们 ...

最新文章

  1. 软件开发环境-按应用范围分类
  2. 沉浸式5G实景、AI+AR体验、机器人互动|5G+数智化展馆广州开幕
  3. 防火墙术语详解(一)
  4. 带你了解DDoS攻击的原理,让你轻松学会DDoS攻击原理及防护措施
  5. JVM 调优实战--VisualVM综合分析可视化工具的使用教程(含远程JMX连接)
  6. html5水调歌头代码,张惠言的五首《水调歌头》
  7. MVC Controllers和Forms验证
  8. 苹果自己设计芯片,但是还是绕不过高通
  9. 压缩和解压文件:tar gzip bzip2 compress(转)
  10. Mysql-5.5.3 主从同步不支持master-host问题的解决办法
  11. 12.1 LNMP架构介绍 12.2 MySQL安装 12.3/12.4 PHP安装 12.5 Ng
  12. XML学习总结(一)——XML介绍
  13. Three.js入门详解
  14. Android Studio历史版本
  15. Docker Swarm 练习:投票 App
  16. 详述Android马甲包
  17. LWN: VR和AR的开源方案
  18. 图片工具GraphicsMagick的下载安装配置使用
  19. 软件设计模式与体系结构实验——3.1-1组合模式的应用
  20. H5移动网页 苹果键盘修改 换行 为 搜索

热门文章

  1. 名编辑电子杂志大师教程 | 如何把制作好的电子杂志保存下来发给客服输出?
  2. 支付风控学习笔记(转载)
  3. 把握趋势,把握未来 —- 小评《只有偏执狂才能生存》
  4. 抖音链接怎么制作二维码?轻松几步在线生成链接二维码
  5. 李开复谷歌最后告别:遭同事难题“拷问”(图)
  6. 行列式的计算方法总结:
  7. xp计算机找不到音量调节,XP系统桌面右下角的音量开关图标不见了,怎么恢复?...
  8. EXCEL countif函数多条件
  9. TFN DP12A 对数周期天线 100MHz~2GHz
  10. [dlang]d语言开发环境安装:centos 7 下安装 mono-d