ar预测模型matlab,Matlab中AR预测模型

2021-01-26 08:47黄相森 客户经理

function ARMODEL() Fs = 1000; t = 0:1/Fs:15; N = size(t,2) %数据样值点数 randn('state',0); x = cos(2*pi*t*200) + randn(1,N); % 200Hz cosine plus noise %计算N个取样数据的取样数据自相关函数 rxx = zeros(1,N); %保存取样数据自相关函数的变量 for m = 0:N-1 sum = 0; for n= 1:N-m temp1 = x(n)*x(m+n); sum = sum + temp1; end rxx(m+1) = sum/N; end %采用Levison-Durbin算法求解AR模型的Yule-Walker模型 %需要确定AR模型理论公式中的参数:白噪声w(n)的方差、方程系数a1……ap(这里包括了模型的阶次) PMAX = 100; %设定AR模型最高阶次 atemp1 = zeros(1,PMAX+1); %保存方程系数的中间变量 atemp2 = zeros(1,PMAX+1); %保存方程系数的中间变量 deviationtemp1 = zeros; %保存白噪声w(n)方差的中间变量 deviationtemp2 = zeros; %保存白噪声w(n)方差的中间变量 %AR(1)模型:x(n) + a1*x(n-1) = w(n) %其Yule-Walker方程: R(0)*1 + R(1)*a1 = deviation1; % R(1)*1 + R(0)*a1 = 0; %求解方程确定a1、deviation1 atemp1(1) = 1; atemp1(2) = -rxx(2)/rxx(1); atemp2 = atemp1; deviationtemp1 = ( rxx(1)*rxx(1) - rxx(2)*rxx(2) )/rxx(1); deviationtemp2 = deviationtemp1; %利用Levison-Durbin迭代算法计算AR模型参数 %根据FPE准则、AIC准则和BIC准则确定AR模型的阶次 %atemp1、deviation1保存第k次的运算结果 %atemp2、deviation2保存第k+1次的运算结果 FPE(1) = deviationtemp1*(N+2)/N; AIC(1) = log(deviationtemp1) + 2/N; BIC(1) = log(deviationtemp1) + log(N)/N; veriance(1) = deviationtemp1; criteria = 3 for P = 2:PMAX sum1 = 0; sum2 = 0; for i = 2:(P+1) sum1 = atemp1(i)*rxx(i) + sum1; end for i = 1:(P+1) sum2 = atemp1(i)*rxx(P+2-i) + sum2; end deviationtemp1 = rxx(1) + sum1; dk = sum2; ref(P) = dk/deviationtemp1; deviationtemp2 = ( 1 - ref(P)*ref(P) )*deviationtemp1; for i = 2:(P+1) atemp2(i) = atemp1(i) - ref(P)*atemp1(P+2-i); end %计算AR(P)模型参数 atemp1 = atemp2; veriance(P) = deviationtemp2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值