#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... ]