matlab - 使用 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 个控制输入。