首页 > 解决方案 > 我的递归 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

标签: matlabrecursionmodel

解决方案


recurs( id, na, nb, theta0, Pinv0 )

您的函数有 5 个参数,请确保在调用函数时将它们全部包含在内。


推荐阅读