【预测模型】基于RLS算法求解数据预测matlab代码

1 简介

为了提高经济领域统计数据的预测精度,代数多项式预测模型的建模 方法应运而生.该方法使用代数多项式模型拟合给定的经济统计数据,并使用递推最小二乘法(RLS)对多项式拟合模型的加权系数进行递推计算以获得最优模型 参数,然后通过获得的最优多项式模型计算未来预测数据.文章以实际统计的经济数据为例进行了仿真计算,研究结果表明,该方法不仅能实现统计数据的高精度拟 合,而且具有很好的预测能力,在经济领域具有广阔的应用前景.

2 完整代码

clc,clear,close all
warning off     % 消除警告
N = 1000;       % 信号观测长度
a1 = 0.99;       % 一阶AR参数
sigma = 0.0731; % 加性白噪声方差
for kk =1:100
  v = sqrt(sigma)*randn(N,1); % 产生v(n)加性白噪声
  u0 = [0];     % 初始数据
  num = 1;       % 分子系数
  den = [1,a1]; % 分母系数
  Zi = filtic(num,den,u0);   % 滤波器的初始条件
  un = filter(num,den,v,Zi);   % 产生样本序列u(n), N x 1 x trials
%     figure,stem(un),title('随机信号');grid on;
  % 产生期望响应信号和观测数据矩阵
  n0 = 1;         % 虚实现n0步线性预测
  M = 2;           % 滤波器阶数
  b = un(n0+1:N); % 预测的期望响应
  L = length(b);  
  un1 = [zeros(M-1,1)',un']; % 扩展数据
  A = zeros(M,L);
  for k=1:L
      A(:,k) = un1(M-1+k : -1 : k);   % 构建观测数据矩阵
  end
  % 应用RLS算法进行迭代寻优计算最优权向量
  delta = 0.004; % 调整参数
  lamda = 0.98; % 遗忘因子
  w = zeros(M,L+1); 
  epsilon = zeros(L,1); 
  P1 = eye(M)/delta;
  % RLS迭代算法过程
  for k=1:L  
      PIn = P1 * A(:,k);
      denok = lamda + A(:,k)'*PIn;
      kn = PIn/denok;
      epsilon(k) = b(k)-w(:,k)'*A(:,k);
      w(:,k+1) = w(:,k) + kn*conj(epsilon(k));
      P1 = P1/lamda - kn*A(:,k)'*P1/lamda;
  end
  w1(kk,:) = w(1,:);
  w2(kk,:) = w(2,:);
  MSE = abs(epsilon).^2;
  MSE_P(kk) = mean(MSE);
end
W1 = mean(w1); % 取平均值
W2 = mean(w2); % 取平均值 
figure,plot(1:kk,MSE_P,'r','linewidth',2),title('平均MSE');grid on;
figure,plot(1:length(W1),W1,'r','linewidth',2),title('平均MSE');hold on;
plot(1:length(W2),W2,'b','linewidth',2),title('权值');hold on;
grid on;legend('\alpha1=0','\alpha2=-1')

3 仿真结果

4 参考文献

[1]曾湘宇. (2014). 基于rls算法的多项式预测模型及其应用研究. 经济数学, 31(1), 85-89.

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab科研辅导帮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值