Yule-Walker方程

更新时间:2023-11-22 22:26:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实 验 报 告

课程名称: 学 院: 专 业: 年 级: 班 级: 姓 名: 学 号: 指导教师:

实验五 Yule-Walker方程

(一)实验目的

学习求解Yule-Walker方程,建立随机信号的AR模型。

(二)实验原理

随机信号可以看作是由当前激励白噪声w(n)以及若干次以往信号x(n-k)的线性组合产生,即所谓自回归模型(AR模型)

x?n??w?n???akx?n?k?k?1pH?z??11??akz?kk?1p

模型参数满足Yule-Walker方程

Rxx?m????akRxx?m?k?m?0

k?1p矩阵形式

R??1??R?0??R?1?R?0???????R?p?1?R?p?2??R?1?p???a1??R?1???a??R?2???R?2?p??2??????? ??????????????a???R?0???Rp????p?求解Yule-Walker方程,就可以得到AR模型系数

当模型阶次较大时,直接用矩阵运算求解的计算量大,不利于实时运算。利用系数矩阵的特性,人们提出了如L-D算法等快速算法。

(三)实验内容和步骤

编写求解Yule-Walker方程的程序,并对实际生理信号(例如脑电)建立AR模型。

对同一数据,使用matlab信号处理工具箱自带函数aryule计算相同阶数AR模型系数,检验程序是否正确。

用伪随机序列(白噪声)驱动AR模型,观察输出是否与真实脑电信号相似,

对比真实信号与仿真信号的功率谱。

流程图: 实验流程图如下:

输入信号选定AR模型的阶数p计算x信号的自相关函数和Toeplitz型矩阵L-D算法,(aryule函数或用arburg)Yule-Woker方程计算最小均方误差参数估计向量参数估计向量a两种不同类型方法的参数估计值比较向量da利用L-D算法或者Burg算法产生的参数变量进行脑电信号、心电信号处理判断自编函数是否正确输出信号最小均方误差E

源程序: clear; clc; load eegdata;

x = eegdata (1:1024); % 长度可以任意选择,但信号越长计算量越大 load ecgdata;

x = ecgdata (1:1024); % 长度可以任意选择,但信号越长计算量越大 p = 12; % 尝试改变模型阶数,观察效果 Rxx = xcorr(x,'biased'); Rtemp = zeros(1,p); Rl = zeros(p,1); for k = 1:length(Rtemp) Rtemp(k) = Rxx(length(x)-1+k); Rl(k) = Rxx(length(x)+k); end

Rs = toeplitz(Rtemp); % 生成自相关系数矩阵(Toeplitz型) A = -inv(Rs)*Rl; % AR模型系数估计

Sw = [Rtemp(1),Rl']*[1;A]; % 白噪声方差估计 % 采用malab自带函数估计模型系数

[a,E] = aryule(x,p); % a--系数,E--预测误差,k--反射系数 da = a(2:end)-A' % 自编程序求解是否正确? Stem(da);title(‘参数估计偏差’) w = randn(size(x));

x2 = filter(1,a,w); % 仿真数据 figure;

subplot(3,1,1);plot(x);title('真实数据'); subplot(3,1,2);plot(x2);title('仿真数据'); error=mean((x2-x).^2); Rxx2=xcorr(x2,'biased'); Px=abs(fft(Rxx)); Px2=abs(fft(Rxx2)); figure;

subplot(2,1,1);plot(-1023:1023,Px);title('真实信号功率谱'); subplot(2,1,2);plot(-1023:1023,Px2);title('仿真信号功率谱');

%%绘制Sw、E随p变化散点图,以下是统计得到的结果 p=[8 9 10 11 12 13 14 15 16];

Sw=[1.0527 1.0301 1.0150 0.9961 0.9943 0.9942 0.9896 0.9877 0.9872]; E=[3.8741 3.4337 3.3200 3.7314 3.3683 3.4809 3.5826 3.6253 3.4176]; subplot(2,1,1);stem(p,Sw);xlabel('p');ylabel('Sw');title('Sw随p变化散点图');

subplot(2,1,2);plot(p,E,'-o');xlabel('p');ylabel('E');title('E随p变化散点图');

实验结果:

1、p=12时,比较心电信号与脑电信号的da值,并作出散点图。

1x 10-16参数估计偏差2.521.5x 10-13参数估计偏差0.501-0.50.5-10-1.5-0.5-1-1.5-2-2.5024681012024681012

脑电信号 结果分析:

心电信号

由以上两个图可以看出脑电信号的参数估计偏差比心电信号的参数估计偏差要小许多,脑电信号的自编程序跟MATLAB信号处理工具箱自带函数aryule的处理更接近。由此可知,L-D算法与自编程序相比较,自编程序对估计的参数比较精确一些。

2、p=12时,比较心电信号与脑电信号的真实数据与仿真数据

真实数据1050-5-100200400600仿真数据10580010001200真实数据10.50-0.5-10200400600仿真数据40208001000120000-5020040060080010001200-20020040060080010001200

脑电信号

结果分析:

心电信号

由上面两幅图可以看出,对心电信号与脑电信号建模后,心电信号的

真实数据和仿真数据相差很大,该模型产生的信号更能真实的反映脑电信号的特征。不同噪声的激励得到的信号时不同的。

3、p=12时,比较心电信号与脑电信号的功率谱,

真实数据功率谱150100真实数据功率谱15010050500-1500-1000-5000仿真数据功率谱500100015000-1500x 104-1000-5000仿真数据功率谱500100015006040321200-1500-1000-5000500100015000-1500-1000-500050010001500

脑电信号 心电信号

结果分析:

在比较脑电信号与心电信号的图之后不难发现,对信号进行功率谱估计时,脑电信号的功率谱的纵坐标相差不大,但是相对而说心电信号的相差是极大的。

4、L-D算法与Burg算法比较

4.1、脑电信号L-D算法与Burg算法比较

真实数据1050-5-100200400600仿真数据5080010001200真实数据1050-5-100200400600仿真数据42080010001200-5-2-4020040060080010001200-10020040060080010001200

L-D算法、error = 3.8118 Burg算法、error =4.0522

1x 10-16参数估计偏差1x 10-3参数估计偏差0.50.50-0.50-1-0.5-1.5-1-2-2.5024681012-1.5024681012

L-D Da值 -0.2220 -0.0971 0.0312 -0.0555 -0.0555 0.0694 0.0833 -0.0104 -0.0625 0.0347 -0.0000 -0.0002 0.0001 -0.1110 -0.0833 -0.0010 0.0006 -0.0008 Burg 0.0007 0.0009 -0.0004 -0.0011 -0.0010 0.0006 结果分析:

当AR模型的阶数p为一个确定值时,对于脑电信号,L-D算法的均方误差比起arburg算法的均方误差要小,但是它的噪声方差估计不变,

4.2、心电信号L-D算法与Burg算法比较

真实数据真实数据110.50.500-0.5-10200400600仿真数据200-20-40-6002004006008001000120080010001200-0.5-10200400600仿真数据50800100012000-50020040060080010001200

L-D算法、error = 162.2773 Burg算法、error = 190.7024

参数估计偏差2.521.510.50-0.5-1-1.5x 10-130.6参数估计偏差0.50.40.30.20.10-0.1-0.2-0.3024681012024681012

L-D 0.0235 0.0136 Burg -0.2838 0.0240

结果分析:

-0.0572 -0.0115 0.5068 -0.0792 Da值 0.0490 0.0310 -0.0974 0.0314 -0.1403 0.2091 -0.2794 0.0121 0.0118 -0.1227 0.1051 -0.0221 0.0083 -0.0116 0.0659 0.0149 由数据可知,心电信号的AR模型的阶数与均方误差和噪声方差估计之间没有必然的联系。与L-D算法相比,Burg算法的AR模型的均方误差比较小,这是因为Burg算法具有较高的计算效率,该算法从总体上选择所有的模型参数达到总的均方误差最小

4.3、改变p值,比较L-D算法与Burg算法(脑电信号)为观察方便我做了下面的表格 P值 Burg算法 Sw 1.0527 1.0301 1.0150 0.9961 E 3.8741 3.4337 3.3200 3.7314 0.9943 3.3683 0.9942 0.9896 0.9877 0.9872 3.4809 3.5826 3.6253 3.4176 L-D算法 Sw 1.0527 1.0301 1.0150 0.9961 E 3.4687 3.2010 3.8530 3.3888 0.9943 3.2874 0.9942 0.9896 0.9877 0.9872 3.3945 3.9315 4.1573 3.3942 8 9 10 11 12 13 14 15 16 Sw随p变化散点图1.5Sw随p变化散点图1Sw1.51Sw0.50.508910111213pE随p变化散点图14151608910111213pE随p变化散点图14151643.83.63.43.289101112p13141516E3.5384.54E9101112p13141516

Burg算法

实验分析:

L-D算法

观察图和表,不难发现,先不管是Burg算法还是L-D算法在改变了p的大小之后,噪声方差估计Sw和均方误差error都有在改变,基于我们取的值来看,噪声方差估计呈现一个先减小后增大的趋势,但是改变的很微弱,不明显。对于均方误差显得杂乱。不管是Burg算法还是L-D算法,噪声方差估计在p值不变的情况下是相同的,只是均方误差在一直改变,而白噪声方差估计值则随阶数的增大而减小,可发现当阶数为12时,白噪声方差估计最接近1,所以,p取12最为合理。

四、思考题

对ECG、EEG建模后,该模型产生的信号能否反映ECG、EEG信号的特征? 答:通过上述各实验,可得出的结论为:心电信号模型产生的信号不能精确的反映ECG信号的特征,因为ECG信号有一定的规律性,而AR模型不能用在信号具有确定性的场合,对于脑电信号信号,因为EEG信号没有规律性,脑电信号可以由均值为0,方差为1的白噪声激励而成,所以它是不确定信号,因而在AR模型中得到它的误差比较小,所以AR模型基本能反应EEG信号的特征。

五、实验总结

最后一次实验了,还是感觉没有整体的学好这门课,也不知道下次还有没有机会再接触了。

本文来源:https://www.bwwdw.com/article/7igv.html

Top