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