использование sim в matlab armax

#matlab #identification #ident

#matlab #идентификация #идентификация

Вопрос:

Я пишу код ниже, но нахожу ошибку, которую я не знаю, что это такое, пожалуйста, помогите мне ошибка

Ошибка при использовании idmodel / sim (строка 114) Входные данные моделирования должны быть указаны с использованием объекта iddata или двойной матрицы.

Ошибка в Untitled (строка 17) y = sim(sys, u);

     clc;
clear all ;
close all;

A = [1 -0.5 0.06];
B = [5 -2]; 
C = [1 -0.2 0.001];
Ts = 1;   %sample time 

sys = idpoly(A,B,C,'Ts',1);

Range = [-1 1];
Band = [0 1];
u = stairs(idinput(100,'prbs',Band,Range));  %form a prbs input

opt1 = simOptions('AddNoise',true);

y = sim(sys ,u,opt1);

iodata = iddata(y,u,Ts);

na = 3;  nb = 2;   nc = 3; nk = 1;
me = armax(iodata,[na,nb,nc,nk]);
compare(iodata,me)
 

большое вам спасибо

Комментарии:

1. является ли строка y = sim(sys, u); частью ошибки или кода? Я не вижу такой строки в предоставленном коде, но ни то, ни другое не имеет смысла, не могли бы вы отредактировать вопрос?

Ответ №1:

Ваша входная переменная u должна быть вектором столбца, но в вашем коде это графический объект, используйте class(u) для проверки этого. Если вы замените эту строку

 u = stairs(idinput(100,'prbs',Band,Range));  %form a prbs input
 

с чем-то вроде этого:

 u = [zeros(25, 1); ones(25, 1)]; % step input
 

Тогда код больше не вылетает.