【问题标题】:using sim in matlab armax在matlab armax中使用sim
【发布时间】:2021-04-15 14:32:15
【问题描述】:

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

使用 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)

非常感谢

【问题讨论】:

  • 是行 y = sim(sys,u);部分错误或代码?我在提供的代码中看不到这样的行,但根本没有意义,你能编辑问题吗?

标签: matlab identification ident


【解决方案1】:

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

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

类似这样的:

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

然后代码不再崩溃。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    相关资源
    最近更新 更多