原理

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公式,故部分地方直接采用了截图形式)

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

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

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

  2. 现代法谱估计(3)Burg算法MATLAB及Python实现

    原理 前面的Yule Walker方程和Levinson Durbin算法都用到了信号的自相关序列,但是这样可能会存在自相关估计不准的问题(默认为序列长度为N,N的取值以外取不到的点都默认为0).而B ...

  3. python 取反_自从用了这招pandas 空数据处理方法,python编程速度提升了不少

    今天为大家带来的内容是:自从用了这招pandas 空数据处理方法,python编程速度提升了不少 文章内容主要介绍了pandas 空数据处理方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工 ...

  4. python open函数_精选2个小例子,带你快速入门Python文件处理

    阅读本文大概需要7分钟讲完了函数和模块,我们来讲一讲文件的使用,python对数据的处理分两种一种是本地文件的处理,另外一种是通过网络数据处理(也就是爬虫相关的).而本地的数据处理,主要是通过文件的读 ...

  5. python 释放内存_学了4年C++后,我转向了Python

    作者 | asya f 编译 | Lisa C++ 已经学不动了,现在换 Python 还来得及吗?一位四年工作经验的 C++ 程序员亲述转型历程,这不仅仅是语言上的转变,而是代码思维甚至工作环境的转 ...

  6. python爱心代码_「含蓄优雅表白神器」程序员式用python代码画爱心(附详细教程)...

    还能用python代码画爱心?还有这种操作?这是什么原理? 不相信python代码可以画爱心?先来一张效果图来看看效果吧! 用python代码画爱心的思路是怎样的? 1.怎么画心形曲线 2.怎么填满心 ...

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

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

  8. python画菊花_网传“菊花厂月薪13K”15道硬核Python面试题,值得一看!

    见过面试题也不少了,总之了一句话:面试前备好功课,面试中临危不乱,面试后谦虚有礼!这只是我本人总结的一些面试三要素,需要的可以参考参考,话不多了,今天为大家找了网传菊花厂比较硬核的15道面试题,希望能 ...

  9. python求解运输问题_【Python实现】运输问题的表上作业法:利用伏格尔 (Vogel) 法寻找初始基可行解...

    #运输问题求解:使用Vogel逼近法寻找初始基本可行解 import numpy as np import pandas as pd import copy #定义函数TP_vogel,用来实现Vog ...

最新文章

  1. Hadoop(十)Hadoop IO之数据完整性
  2. 台湾一校长震动所有中国人的演讲
  3. C语言内存编址和寻址、内存对齐
  4. sdk和api有什么区别
  5. 几个ASP.NET小技巧
  6. httpclient java 异步_Java的异步HttpClient
  7. 西班牙夺得欧洲杯给IT业的十条启示
  8. 这家曾经的开源明星企业竟然生死未卜了
  9. 2022-2028全球汽车后置摄像头模组行业调研及趋势分析报告
  10. 以太网MDIO总线调试笔记
  11. 无线射频专题《IEEE 802.11协议讲解4@可调参数,性能与兼容性考虑》
  12. ipa文件缓存服务器,ipa文件包获取服务器地址
  13. SQL中convert()函数基本使用
  14. PowerDesigner 15及破解补丁_PowerDesigner 12.5及破解补丁_PowerDesigner破解版_PowerDesigner下载
  15. postman 获取接口参数_postman 接口参数化操作
  16. @media 的使用规范
  17. 7.23翻倍奖励——滴滴快车单(成交率≥60%,≥5指派单)
  18. 计算机专业论文可行性研究怎么写,计算机论文怎么写?
  19. 四 状语从句(2021-11-09)
  20. 计算机技术论文搜索引擎,搜索引擎-毕设论文.doc

热门文章

  1. MySQL-数据库技术及应用
  2. Git版本控制管理——简介
  3. 面经 | Java 基础 整理
  4. JDY-10M BLE组网模块介绍
  5. Nginx的rewrite操作
  6. 蓝松SDK更新至:4.9.0
  7. js创建svg元素并插入到html中使用createElementNS
  8. Unreal Engine 4 源代码下载以及使用VS编译
  9. docx4j libreOffice
  10. 用MATLAB自带的worldmap及相关函数画地图