Использование Lsim в Matlab для систем с несколькими выводами и несколькими входами

#matlab

#matlab

Вопрос:

У меня есть система пространства состояний, состоящая из 16 переменных состояния, 10 входов и 18 выходов.

Как мне использовать команду Lsim для этой системы? В частности, как мне определить u и t , для lsim(sys, u, t) .

Заранее спасибо за любую помощь! Амрита

Ответ №1:

Если ваша система имеет 10 входов, и вы хотите имитировать Nt временные шаги, тогда t должно быть 1 x Nt и u должно быть 18 x Nt , например:

 sys = whatever;
m = 10;      % num inputs

Nt = 1000;   % 1000 samples
t_end = 10;  % simulate for 10 seconds
t = linspace(0, t_end, Nt);

u = ones(m, Nt);      % a step input on all inputs 
y = lsim(sys, u, t);

% or, e.g.
u = [sin(t); cos(t); zeros(m-2, Nt)];  % sin and cos for the first two inputs,
                                       %  zero for the others
y = lsim(sys, u, t);
  

Комментарии:

1. Большое спасибо. Это действительно помогло. Я хочу предоставить ему постоянные входные данные в течение нескольких секунд времени. Например, мои 10 входных данных — это числа, 10, 23, 34, 45, 56, 5, 4, 3, 2 , 25. Как мне записать u в этом случае с одинаковым количеством отсчетов времени ОС. Я ценю вашу помощь.

2. Я думаю, что самый быстрый способ u = kron([10, 23, etc, 25]', ones(size(t))) , но, возможно, его легче понять u = [10*ones(1, Nt); 23*ones(1, Nt); etc... ]