首页 > 解决方案 > 在matlab armax中使用sim

问题描述

我在下面编写代码,但我发现一个我不知道它是什么的错误请帮助我错误是

使用 idmodel/sim 时出错(第 114 行) 必须使用 iddata 对象或双矩阵指定模拟输入数据。

无标题错误(第 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)

非常感谢您

标签: matlabidentificationident

解决方案


您的输入变量u应该是一个列向量,但在您的代码中它是一个图形对象,用于class(u)检查这一点。如果你替换这一行

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

像这样:

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

然后代码不再崩溃。


推荐阅读