首页 > 解决方案 > 使用 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

这里的输入通道是什么意思?总的来说,我不确定如何解决这个错误。我有一个设定的时间,我希望模拟运行,但我不知道如何正确设置我的输入向量。我正在模拟三个状态。

标签: matlabode

解决方案


如果您的输入矩阵是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 个控制输入。


推荐阅读