随机信号功率谱密度函数理论、估计方法及MATLAB代码
文章的内容整理自网络,仅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代码相关推荐
- MVDR频率估计方法及其Matlab代码实现
本文同步发布在我的个人博客宅到没朋友,欢迎来玩! 1.前言 M V D R MVDR MVDR频率估计方法的理论知识此处略过,直接介绍最后得到的 M V D R MVDR MVDR谱估计公式. 2. ...
- 【图像分割】基于萤火虫优化的半监督谱聚类彩色图像分割方法(Matlab代码实现)
目录 0 概述 1 萤火虫算法 1.1 思想来源 1.2 数学模型 1.2.1 萤火虫相对荧光亮度 1.2.2 萤火虫吸引度 1.2.3 位置更新 1.3 算法步骤 2 基于萤火虫优化的半监督谱聚类彩 ...
- 【信号处理】CFO估计技术(Matlab代码实现)
目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 针对存在未知载波频偏(CFO)的线性调制分类,提出一种混合似似然比检测(qHLRT)分类器.并且通过使用多天线接收机来进 ...
- 基于扩展卡尔曼滤波的SOC估计(附MATLAB代码)
1.卡尔曼滤波原理 原理可以参考我之前学习的笔记,使用goodnote完成的. 我认为,对于公式的推导不需要做太多深入的了解,我之前也对公式进行推导的理解,但是没过几天就忘了,只需要掌握住那重要的5个 ...
- Caputo 分数阶一维问题基于 L1 逼近的空间二阶方法(附Matlab代码)
Caputo 分数阶一维问题基于 L1 逼近的空间二阶方法 Caputo 分数阶一维问题基于 L1 逼近的快速差分方法(附Matlab程序) 文章目录 Caputo 分数阶一维问题基于 L1 逼近的空 ...
- 大连理工大学2022年春季学期优化方法上机 Matlab代码
大连理工大学2022年春季学期优化方法上机作业前两道题 包含Matlab最速下降法.阻尼牛顿法,共轭方向发(标准形式和FR).DFP.BFGS 2022.04.25 修改,第一题共轭梯度法计算结果正确 ...
- 系统辨识的几种方法实现MATLAB代码
系统辨识,即在已知系统阶次的情况下辨识出系统的参数或辨识系统阶次,一般用到的方法有最小二乘法.辅助变量法等,对于离线与在线辨识,只是加入一个递推的问题.下面本文给出系统辨识方法的实现代码. 首先是处理 ...
- 基于自适应扩展卡尔曼滤波器(AEKF)的锂离子电池SOC估计(附MATLAB代码)
AEKF_SOC_Estimation函数使用二阶RC等效电路模型(ECM)和自适应扩展卡尔曼滤波器(AEKF)估计电池的端电压(Vt)和充电状态(SOC).该函数将以下内容作为输入: · 电流(A) ...
- 图像增强的几个方法以及Matlab代码
1. 灰度线性变换 灰度线性变换, 是一种空域的方法, 直接对每一个像素的灰度值进行操作 假设图像为 I I I 则其中每一个像素点的灰度值为 I ( x , y ) I(x,y) I(x,y) 我们 ...
最新文章
- 软件开发环境-按应用范围分类
- 沉浸式5G实景、AI+AR体验、机器人互动|5G+数智化展馆广州开幕
- 防火墙术语详解(一)
- 带你了解DDoS攻击的原理,让你轻松学会DDoS攻击原理及防护措施
- JVM 调优实战--VisualVM综合分析可视化工具的使用教程(含远程JMX连接)
- html5水调歌头代码,张惠言的五首《水调歌头》
- MVC Controllers和Forms验证
- 苹果自己设计芯片,但是还是绕不过高通
- 压缩和解压文件:tar gzip bzip2 compress(转)
- Mysql-5.5.3 主从同步不支持master-host问题的解决办法
- 12.1 LNMP架构介绍 12.2 MySQL安装 12.3/12.4 PHP安装 12.5 Ng
- XML学习总结(一)——XML介绍
- Three.js入门详解
- Android Studio历史版本
- Docker Swarm 练习:投票 App
- 详述Android马甲包
- LWN: VR和AR的开源方案
- 图片工具GraphicsMagick的下载安装配置使用
- 软件设计模式与体系结构实验——3.1-1组合模式的应用
- H5移动网页 苹果键盘修改 换行 为 搜索
热门文章
- 名编辑电子杂志大师教程 | 如何把制作好的电子杂志保存下来发给客服输出?
- 支付风控学习笔记(转载)
- 把握趋势,把握未来 —- 小评《只有偏执狂才能生存》
- 抖音链接怎么制作二维码?轻松几步在线生成链接二维码
- 李开复谷歌最后告别:遭同事难题“拷问”(图)
- 行列式的计算方法总结:
- xp计算机找不到音量调节,XP系统桌面右下角的音量开关图标不见了,怎么恢复?...
- EXCEL countif函数多条件
- TFN DP12A 对数周期天线 100MHz~2GHz
- [dlang]d语言开发环境安装:centos 7 下安装 mono-d