原理

AR模型的系统函数可以表示为:

如果在白噪声 激励下模型的输出为x(n),则模型输入、输出关系的时域表达式为:

此式为AR模型的差分方程。将白噪声 激励AR模型产生的输出x(n)叫做AR过程。

根据相关卷积定理,若y(n)=x(n)*h(n),则有

即卷积的相关等于相关的卷积。如果对上式两边求傅里叶变换,根据维纳辛钦定理和相关定理,有

即输出自功率谱等于输入自功率谱与系统能量谱的乘积。

根据谱分解定理,任何平稳随机信号x(n)都可以看成是由高斯白噪声激励一个因果稳定的可逆系统H(z)产生的输出,如下图所示

因此上述公式可以变换为

上式说明,平稳随机信号x(n)的功率谱可以用模型H(z)的参数来表示。

对于p阶AR模型的系统函数

可以看出其由p+1个待定参数:a1-ap和G。

系统输出x(n)可表示为:

上式可以解释为:用n时刻之前的p个值的线性组合来预测n时刻的值x(n),预测误差为Gw(n) 。在均方误差最小准则下,组合系数的选择应该使预测误差的均方误差最小。令均方误差为e(n),有

则有

由于

可以计算出

在最小均方误差(MMSE)准则下,要使预测值最佳地逼近x(n),参数的选择应使

也即

可得到

由上式可得p个方程,写成矩阵式为

上式用到自相关函数的偶对称性质。由这p个方程,可以求出p个参数ai。有了这些参数就可以根据自相关函数和参数ai求解系统增益G。联立可得

上式即为AR模型的正则方程,也叫Yule-Walker方程。

利用以上求出的p+1个参数,我们可以可以估计出该随机信号的功率谱。

程序及结果

(出于维护版权原因,此次只放截图)

MATLAB

程序:

结果:

Python

程序:

结果:

分析

由上图可见,我给程序输入的N为256,取的阶数p为128,信号中f1=0.1,f2=0.13,在图中我们可以看到对应的位置出现了峰值,由于给定幅度大小不同,故峰值大小有很大差别。与经典法谱估计不同的是,图中只出现了一半,而不是像经典法中的出现四个两两对称的峰,这是由于程序中使用了freqz函数(Python中为scipy.signal.freqz)求其频率响应,MATLAB中我们可以打这个函数的帮助手册:

h :Complex, n-element frequency response vector.

h:复n元频率响应矢量。

w: Frequency vector of length n, in radians/sample. w consists of n points equally spaced around the upper half of the unit circle (from 0 to π radians/sample).

w:长度n的频率矢量,单位为弧度/样本。w由n个点组成,这些点平均分布在单位圆的上半部分(从0到π弧度/样本)。

可见w的范围是0到π弧度,所以用freqz函数求出的频率响应只有0到π部分。由于h是复频率响应矢量,因此要求其功率谱要对频率响应求模平方。然后我利用了寻峰函数来得出峰值对应的横坐标(Python中是自己写了一个寻峰估计频率的方法),程序中将所有的峰值及其索引分别放入到两个数组中,且根据峰值大小降序排列,确定最大的两个峰值和其索引位置,然后由索引位置除以2N(freqz函数得出的是单位圆上半部分,频率范围对应为0-0.5,而对应的序列长度为N,因此根据比例关系可知,索引值/N=频率值/0.5也即,频率值=索引值/2N)。

(因原博客是以word形式写的,CSDN不支持Mathtype公式,故部分地方直接采用了截图形式)

标签:误差,Yule,函数,Python,模型,谱估计,峰值,AR,频率响应

python寻峰算法_现代法谱估计(1)Yule Walker 方程法MATLAB及Python实现相关推荐

  1. python求解差分方程_现代法谱估计(1)Yule Walker 方程法MATLAB及Python实现

    原理 AR模型的系统函数可以表示为: 如果在白噪声 激励下模型的输出为x(n),则模型输入.输出关系的时域表达式为: 此式为AR模型的差分方程.将白噪声 激励AR模型产生的输出x(n)叫做AR过程. ...

  2. python寻峰算法_在python中快速查找峰和质心

    我正在尝试在python中开发一种快速算法,以查找图像中的峰值,然后找到这些峰值的质心.我使用scipy.ndimage.label和ndimage.find_objects编写了以下代码来查找对象. ...

  3. python寻峰算法_python/scipy的寻峰算法

    我可以自己写一些东西,通过找到一阶导数的零交叉点或其他东西,但它似乎是一个足够通用的函数,可以包含在标准库中.有人知道吗? 我的特殊应用是一个二维数组,但通常它会用于在FFT等中查找峰值. 具体地说, ...

  4. python解析原理_主成分分析法原理及其python实现

    主成分分析法原理及其python实现 前言: 这片文章主要参考了Andrew Ng的Machine Learning课程讲义,我进行了翻译,并配上了一个python演示demo加深理解. 本文主要介绍 ...

  5. python dfs算法_算法工程师技术路线图

    前言 这是一份写给公司算法组同事们的技术路线图,其目的主要是为大家在技术路线的成长方面提供一些方向指引,配套一些自我考核项,可以带着实践进行学习,加深理解和掌握. 内容上有一定的通用性,所以也分享到知 ...

  6. python 最短路径算法_最短路径python

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 最短路径问题(python实现)解决最短路径问题:(如下三种算法)(1)迪杰斯特 ...

  7. Python 寻峰算法

    针对一组离散数据的寻峰算法包,可以设置高度.宽度等一系列参数寻找合适的峰值.具体参考find_peaks包. https://docs.scipy.org/doc/scipy/reference/ge ...

  8. python回归算法_基于Python的函数回归算法验证

    看机器学习看到了回归函数,看了一半看不下去了,看到能用方差进行函数回归,又手痒痒了,自己推公式写代码验证: 常见的最小二乘法是一阶函数回归 回归方法就是寻找方差的最小值 y = kx + b xi, ...

  9. python本科生就业_准备报学习机构学习大数据、Java或者python,是计算机专业的本科生,请问选择哪种就业发展比较好?...

    谢邀.对比java和python后者还算是小语种.不知道楼主的具体情况如何.根据个人情况,建议先学java,毕竟你目前的需求是尽快找到更合适的技术工作,java择业面相对较宽,虽然也难学,但学习资源丰 ...

最新文章

  1. Codeforces Round #297 (Div. 2)E. Anya and Cubes 折半搜索
  2. php session 过期,php session失效的原因
  3. jboss启动多个实例
  4. [云炬创业基础笔记] 第四章测试2
  5. mysql承受压力_MySQL 压力性能测试(Mysqlslap)工具
  6. Yii框架 phpexcel 导出
  7. NSA泄露的恶意软件DoublePulsar感染了数万台Windows电脑
  8. Java探索之旅(6)——对象和类
  9. 3.6 SM30维护表数据
  10. html中foreach遍历list,foreach遍历----for(object o: list)
  11. 如何进行网站性能优化
  12. ccd相机好修吗_CCD到底值不值得买,CCD相机入坑全过程
  13. 093-PHP数组比较
  14. python将元祖设为整形_相识python --------str字符串 int整形 bool布尔值 tu元祖 set()集合 dict 字典的数据补充...
  15. 优化问题---切线、切向量、切平面;法线,法向量,法平面
  16. 【安全攻防系列 入侵排查 篇】 Windows和 Linux入侵排查 的思路及其工具篇
  17. 什么是HTTPS证书
  18. spring mvc处理异常
  19. 2016新华三杯复赛实验试题
  20. html清除盒子间距,inline-block元素默认间距清除

热门文章

  1. ibatis 如何直接执行sql语句
  2. Apache Zookeeper 集群环境搭建
  3. c# 获取html代码怎么写,C#获取网页源代码的方法
  4. html点击文字展开图片,DIV CSS鼠标经过悬停在图片上时图片上方显示文字
  5. mpu6050 重力加速度_MPU6050抄底解读
  6. c# mvc5 view 多层_三、 添加视图View(ASP.NET MVC5 系列)
  7. Java hibernate假外键_JAVA基础:Hibernate外键关联与HQL语法
  8. SSH三大框架的概述
  9. linux的 定时器传参数,JavaScript 定时器调用传递参数的方法
  10. 201621123053《Java程序设计》第十四周学习笔记文章