У меня проблемы с моим рекурсивным ARX. У меня ошибка «недостаточно входных аргументов». Все операции ввода / вывода даны, и я должен использовать их все - PullRequest
0 голосов
/ 20 февраля 2020

% 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

1 Ответ

0 голосов
/ 20 февраля 2020
recurs( id, na, nb, theta0, Pinv0 )

ваша функция имеет 5 параметров, обязательно включите их все во время вызова функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...