如何解决使用lsim时设置u向量
在使用Matlab尝试在离散时间内模拟连续时间系统时,我遇到了一个令人沮丧的错误。
Ts = 0.01;
A=[-0.313 0 56.7;
0 56.7 0;
-0.0139 0 0.426];
B = [0.232; 0; 0.0203];
C = [0 1 0];
D = 0;
SYSC = ss(A,B,C,D);
SYSD = c2d(SYSC,Ts);
t = linspace(0,10,10/0.01)';
u = zeros(1000,3);
u(:) = 0.2;
lsim(SYSD,u,t);
我遇到了错误:
When simulating the response to a specific input signal,the
input data U must be a matrix with as many rows as samples in
the time vector T,and as many columns as input channels
这里的输入通道是什么意思?总体而言,我不确定如何解决此错误。我有一个要运行模拟的设定时间,但我不知道如何正确设置输入向量。我正在建模三个状态。
解决方法
如果您的输入矩阵是B = [0.232; 0; 0.0203]
并且是3×1列向量,则A*x + B*u
给出的线性系统只有一个控制输入。
所以u
应该是:
u = zeros(1000,1);
u(:) = 0.2;
您可以使用来模拟离散时间系统
lsim(SYSD,u,[]);
请注意,您无需在lsim
中为离散模拟定义时间向量,因为u
的采样速率与SYSD
相同。
如果B
矩阵是3×3,那么您将需要3个控制输入。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。