#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
Тогда код больше не вылетает.