基于Matlab功率谱密度估计方法

摘要

在实际情况下, 许多平稳信号无法导出数学表达式, 要准确获取这些信号的功率谱密度存在一定的困难。根据维纳-辛钦 (Wiener Khintchine)定理,提出一种基于Matlab编程实现这类信号的功率谱密度的估计方法。通过仿真实验表明, 该方法简单易行,准确性较高。

关键词:平稳信号;功率谱密度;估计方法;

Estimation Method for Power Spectral Density of Stationary

Signals

Abstract

In practice m any mathematical expressions can no t be derived from stationary signals as there are: some difficulties in getting the power spectral density of the signals According to Wiener Khintchine theorem, the paper suggested an estimation method for power spectral density of the signals based on Matlab programming Simulation results show that the method is simple and comparatively accurate.iim. Keywords:Stationary signal; Power spectral density; estuation method;

前言

信号的功率谱密度在通信系统的设计、信号传输、信号分析及信号处理等方面有很重要的作用。频谱分析是信号在频率域上的重要手段,他反映了信号的频率成分以及分布情况。信号频谱估计是信号分析的重要手段,也是信号综合的前提

在实际情况下, 许多信号很难导出闭合的数学表达式, 例如密勒码 ( Miler code)、双极性不归零码 ( NRZI) 等信号至今在时域中还没有数学表达式, 虽然Hecht& Guida在1969年导出了密勒码的功率谱密度的表达式并做出了图形,但推导过程及得出的表达式非常复杂。因此在进行理论计算或推导时, 常常需要将实际使用的信号理想化地近似为标准的正弦信号或有数学表达式的信号, 才能推导出相应的功率谱密度表达式。

而这种近似由于与实际信号有差别, 因此不能代表实际信号的情况, 且有时根据这种近似推导得出的结果可能存在错误。本文首先介绍多种功率谱密度相关方法的MATLAB实现,并根据维纳 - 辛钦定理, 提出一种基于Matlab编程实现信号的功率谱密度的估计方法:在不知道信号的数学表达式的情况下, 通过建模及编程运算就可以实现该信号的功率谱密度的样值输出及画出图形。

1 功率谱密度估计方法的实现原理及流程

1.1功率谱密度相关方法的MATLAB实现

1.1 1.Welch法估计及其MATLAB函数

Welch功率谱密度就是用改进的平均周期图法来求取随机信号的功率谱密度估计的。Welch法采用信号重叠分段、加窗函数和FFT算法等计算一个信号序列的自功率谱估计(PSD如上例中的下半部分的求法)和两个信号序列的互功率谱估计(CSD)。

MATLAB信号处理工具箱函数提供了专门的函数PSD和CSD自动实现Welch法估计,而不需要自己编程。

(1) 函数psd利用Welch法估计一个信号自功率谱密度,函数调用格式为:

[Pxx[,f]]=psd(x[,Nfft,Fs,window,Noverlap,’dflag’])

式中,x为信号序列;Nfft为采用的FFT长度。这一值决定了功率谱估计速度,当Nfft采用2的幂时,程序采用快速算法;Fs为采样频率;Window定义窗函数和x分段序列的长度。窗函数长度必须小于或等于Nfft,否则会给出错误信息;Noverlap为分段序列重叠的采样点数(长度),它应小于Nfft;dflag为去除信号趋势分量的选择项:’linear’,去除线性趋势分量,’mean’去除均值分量,’none’不做去除趋势处理。Pxx为信号x的自功率谱密度估计。f为返回的频率向量,它和Pxx对应,并且有相同长度。

在psd函数调用格式中,缺省值为:Nfft=min(256,length(x)),Fs=2Hz, window=hanning(Nfft),noverlap=0. 若x是实序列,函数psd仅计算频率为正的功率

注意程序前半部分中频率向量f的创建方法。它与函数psd的输出Pxx长度的关系如下:若x为实序列,当Nfft为奇数时,f=(0:(Nfft+1)/2-1)/Nfft;当Nfft为偶数时,f=(0:Nfft/2)/Nfft。

函数还有一种缺省返回值的调用格式,用于直接绘制信号序列x的功率谱估计曲线。

函数还可以计算带有置信区间的功率谱估计,调用格式为:

[Pxx,Pxxc,f]=psd(x,Nfft,Fs,window,Noverlap,p)

式中,p为置信区间,0<=p<=1。

由此可知,滤波器输入白噪声序列的输出信号的功率谱或自相关可以确定滤波器的频率特性。

(2)函数csd利用welch法估计两个信号的互功率谱密度,函数调用格式为:

[Pxy[,f]]=csd(x,y,Nfft,Fs,window,Noverlap,’dflag’)

[Pxy,Pxyc[,f]]=csd(x,y,Nfft,Fs,window,Noverlap,p)

这里,x,y为两个信号序列;Pxy为x,y的互功率谱估计;其他参数的意义同自功率谱函数psd。

可以看到,两个白噪声信号的互功率谱(上图)杂乱无章,看不出周期成分,大部分功率谱在-5dB以下。然而白噪声与带有噪声的周期信号的功率谱在其周期(频率为1000Hz)处有一峰值,清楚地表明了周期信号的周期或频率。因此,利用未知信号与白噪声信号的互功率谱也可以检测未知信号中所含有的频率成分。

1.1.2 多窗口法

多窗口法(Multitaper method,简称MTM法)利用多个正交窗口(Tapers)获得各自独立的近似功率谱估计,然后综合这些估计得到一个序列的功率谱估计。相对于普通的周期图法,这种功率谱估计具有更大的自由度,并在估计精度和估计波动方面均有较好的效果。普通的功率谱估计只利用单一窗口,因此在序列始端和末端均会丢失相关信息,而且无法找回。而MTM法估计增加窗口使得丢失的信息尽量减少。

MTM法简单地采用一个参数:时间带宽积(Time-bandwidth product)NW,这个参数用以定义计算功率谱所用窗的数目,为2*NW-1。NW越大,功率谱计算次数越多,时间域分辨率越高,而频率域分辨率降低,使得功率谱估计的波动减小。随着NW增大,每次估计中谱泄漏增多,总功率谱估计的偏差增大。对于每一个数据组,通常有一个最优的NW使得在估计偏差和估计波动两方面求得折中,这需要在程序中反复调试来获得。

MATLAB信号处理工具箱中函数PMTM就是采用MTM法估计功率谱密度。函数调用格式为:

[Pxx[,f]]=pmtm(x[,nw,Nfft,Fs])

式中,x为信号序列;nw为时间带宽积,缺省值为4。通常可取2,5/2,3,7/2;Nfft为FFT长度;Fs为采样频率。

上面的函数还可以通过无返回值而绘出置信区间,如pmtm(x, nw, Nfft, Fs,’option’,p)绘制带置信区间的功率谱密度估计曲线,0<=p<=1。 1.1.3最大熵法(Maxmum entropy method,MEM法)

如上所述,周期图法功率谱估计需要对信号序列“截断”或加窗处理,其结果是使估计的功率谱密度为信号序列真实谱和窗谱的卷积,导致误差的产生。 最大熵功率谱估计的目的是最大限度地保留截断后丢失的“窗口”以外信号的信息,使估计谱的熵最大。主要方法是以已知的自相关序列rxx(0),rxx(1),?,rxx(p)为基础,外推自相关序列rxx(p+1), rxx(p+2),?,保证信息熵最大。

最大熵功率谱估计法假定随机过程是平稳高斯过程,可以证明,随机信号的最大熵谱与AR自回归(全极点滤波器)模型谱是等价的。

MATLAB信号处理工具箱提供最大熵功率谱估计函数pmem,其调用格式为:

[Pxx,f,a]=pmem(x,p,Nfft,Fs,’xcorr’)

式中,x为输入信号序列或输入相关矩阵;p为全极点滤波器阶次;a为全极点滤波器模型系数向量;’xcorr’是把x认为是相关矩阵。

比较最大熵功率谱估计(MEM)和改进的平均周期图功率谱估计,可见,MEM法估计的功率谱曲线较光滑。在这一方法中,MEM法选定全极点滤波器的阶数取得越大,能够获得的窗口外的信息越多,但计算量也越大,需要根据情况折中考虑。

1.1.4 多信号分类法

MATLAB信号处理工具箱还提供另一种功率谱估计函数pmusic。该函数执行多信号分类法(multiple signal classification,Music法)。将数据自相关矩阵看成由信号自相关矩阵和噪声自相关矩阵两部分组成,即数据自相关矩阵R包含有两个子空间信息:信号子空间和噪声子空间。这样,矩阵特征值向量(Eigen vector)也可分为两个子空间:信号子空间和噪声子空间。为了求得功率谱估计,函数pmusic计算信号子空间和噪声子空间的特征值向量函数,使得在周期信号频率处函数值最大,功率谱估计出现峰值,而在其他频率处函数值最小。其调用格式为:

[Pxx,f,a]=pmusic(x,p[[,thresh],Nfft,Fs,window,Noverlap])

式中,x为输入信号的向量或矩阵;p为信号子空间维数;thresh为阈值,其他参数的意义与函数psd相同。

1.2平稳信号实现原理

根据维纳 - 辛钦定理, 平稳信号的自相函数和功率谱密度互为傅里叶变换对, 表达式如下:

P()=r()=

d ,d,

<<< ( 1) <<< ( 2)

式中, P () 为信号功率谱密度函数, r () 为信号的自相关函数。根据式 ( 1) 可知, 只要想办法得到信号的自相关函数, 经过傅里叶变换后即可得到信号的功率谱密度函数。

功率谱密度相关方法的matlab实现,基于Matlab功率谱密度估计方法相关推荐

  1. 谱密度 matlab,(完整word版)功率谱密度估计方法的MATLAB实现

    功率谱密度估计方法的MATLAB实现 在应用数学和物理学中,谱密度.功率谱密度和能量谱密度是一个用于信号的通用概念,它表示每赫兹的功率.每赫兹的能量这样的物理量纲.在物理学中,信号通常是波的形式,例如 ...

  2. matlab功率谱的峰值,基于Matlab功率谱密度估计方法.doc

    基于Matlab功率谱密度估计方法 基于Matlab功率谱密度估计方法要在实际情况下, 许多平稳信号无法导出数学表达式, 要准确获取这些信号的功率谱密度存在一定的困难.根据维纳辛钦 (Wiener K ...

  3. Matlab:基于Matlab通过GUI实现自动驾驶的车牌智能识别

    Matlab:基于Matlab通过GUI实现自动驾驶的车牌智能识别 目录 车牌图像数据集 视频动态演示 核心代码 相关文章 Matlab:基于Matlab通过GUI实现自动驾驶的车牌智能识别 Matl ...

  4. Matlab:基于Matlab实现人工智能算法应用的简介(SVM支撑向量机GA遗传算法PSO粒子群优化算法)、案例应用之详细攻略

    Matlab:基于Matlab实现人工智能算法应用的简介(SVM支撑向量机&GA遗传算法&PSO粒子群优化算法).案例应用之详细攻略 目录 1.SVM算法使用案例 1.1.Libsvm ...

  5. Matlab:基于Matlab实现人工智能算法应用的简介(BP神经网络算法NN、SOFM神经网络)、案例应用(基于Matlab的GUI的方式创建/训练/预测神经网络)之详细攻略

    Matlab:基于Matlab实现人工智能算法应用的简介(BP神经网络算法NN.SOFM神经网络).案例应用(基于Matlab的GUI的方式创建/训练/预测神经网络)之详细攻略 目录

  6. 图像有损压缩matlab程序,基于Matlab的灰度图像DCT与RLE的混合有损压缩

    人工智能及识别技术本栏目责任编辑:唐一东第5卷第21期(2009年7月)基于Matlab 的灰度图像DCT 与RLE 的混合有损压缩 朱玲芳,刘任任 (湘潭大学信息工程学院,湖南湘潭411105) 摘 ...

  7. 码分复用的matlab仿真,基于matlab的多路时分复用仿真.doc

    基于matlab的多路时分复用仿真 通信系统原理综设实验报告 多路时分复用matlab仿真系统 教师评语: 引言 在实际的通信系统中,为了扩大通信链路的容量,提高通信系统的利用率,需要在一条链路上传输 ...

  8. matlab rltool,基于Matlab工具箱Rltool的控制系统校正设计

    山西电子技术2018 年第 4 期 软件技术 收稿日期:2018 -04 -10 作者简介: 乔永凤( 1975-) ,女,山西左云人,讲师,硕士研究生,主要研究方向: 语音信号处理,自动控制原理及其 ...

  9. spwm逆变器双极性matlab教程,基于MATLAB/Simulink的SPWM逆变电源的建模与仿真

    Electrical Automation 变流技术 Converter Techniques <电气自动化>2014 年第 36 卷 第 3 期 基于 MATLAB/Simulink 的 ...

最新文章

  1. react 组件连动效果_react-redux应用之独立组件联动实例
  2. C#关于事件的几个好例子
  3. 常用的PHP正则表达式汇总
  4. pprof 的原理与实现
  5. 在Spring Boot中使用@ConfigurationProperties
  6. 开启弹窗_烦人的电脑弹窗怎样关闭?4种方法还你干净桌面
  7. 爬取 wallhaven图片到本地壁纸库
  8. 苹果叶片病害识别中的深度学习研究
  9. Android自定义布局的背景在多分辨率的情况下设置fill_parent时背景不能够横向全屏的问题解决...
  10. Discuz! 7.2 二次开发基础 (一)
  11. Struts2 框架
  12. 李俊昌《衍射计算及数字全息》代码
  13. mysql数据库接收不了中文乱码_mysql数据库 中文乱码
  14. Zabbix5系列-监控惠普服务器iLO管理口 (六)
  15. VirtualBox搭建OpenWrt软路由
  16. iOS7 与 iOS8上 uisegementcontrol 设置image不显示问题
  17. ewebeditor漏洞大全
  18. 突破单IP频繁反爬虫限制的小技巧
  19. css3价格斜切_css3 斜切角/斜边的实现方式
  20. DDR 内存基础知识(2)- DDR预取

热门文章

  1. 基于HTML5的棋盘游戏开发,基于HTML5的网页围棋游戏的开发
  2. 雷鸟Thunderbird客户端加密方法
  3. java递归函数返回值_Java基础——方法返回值递归
  4. java递归怎么写_Java 基本的递归写法
  5. python求长整数_python 长整数
  6. c语言判断循环小数,a/b=c问怎么确定这个循环小数c的循环节长度?
  7. Python绘制词云图并统计词频
  8. 如何实现Oracle中的分页查询
  9. Python 1-22 测试
  10. (B站动力节点老杜MySQL教程)MySQL课堂笔记-day02.txt