matlab - 我的递归 ARX 有问题。我有“没有足够的输入参数”错误。所有的 I/O 都是给定的,我必须全部使用它们
问题描述
% arx 递归函数,用于对 iddata 文件中给出的一些已知数据进行模型逼近为了不使用复杂的微积分,我还使用了一个递归公式来找到矩阵 P 的逆
function [ theta ] = recurs( id, na, nb, theta0, Pinv0 )
N=na+nb;
theta=zeros(N, na+nb);
y=id.Y;
u=id.U;
W=zeros(N);
Pinv=zeros(N);
E=zeros(N);
phi=[];
for k=1:N
phi1= zeros(na, 1);
phi2= zeros(nb, 1);
for i= 1 : na
if (k-i)<=0
phi1(k)=0;
else
phi1(k)=-y(k-i);
end
end
for j= 1 : nb
if (k-j)<=0
phi2(k)=0;
else
phi2(k)=u(k-nk-j);
end
end
phi = [phi1 phi2];
if (k == 1)
theta(k)=theta0+W(k)*E(k);
Pinv(k)=Pinv0-Pinv0*phi(k)*phi(k)'*Pinv0;
else
E(k)=y(k)-phi(k)'*theta(k-1);
Pinv(k)=Pinv(k-1)-(Pinv(k1)*phi(k)*phi(k)'*Pinv(k1));
W(k)=Pinv(k)*phi(k);
theta(k)=theta(k-1)+W(k)*E(k)
end
end
end
解决方案
recurs( id, na, nb, theta0, Pinv0 )
您的函数有 5 个参数,请确保在调用函数时将它们全部包含在内。
推荐阅读
- c - 删除功能无法删除链表中除第一个以外的节点
- python - 使用 Python 从 Bitbucket 中提取源(分支)列表
- python - multiprocessing.Value 无法正确存储浮点数
- php - 为什么我的简单“如果”不起作用?PHP
- java - ResourceHandler 与控制器中的通配符冲突
- frameworks - 在 Bot Framework 中获取 MethodNotAllowed
- python - 使用paintEvent在QLabel中绘画
- python - Python - 在嵌套的 for 循环中使用时如何获取列表的名称
- java - 使用 Alpakka 使用来自 IBM JMS 队列的消息
- sql-server - SQL Server - 使用多台服务器提高查询速度 - 你的想法/建议/经验