Система реагирования космической модели состояния Matlab - PullRequest
1 голос
/ 14 апреля 2020

У меня есть следующая лаборатория, в которой меня попросили написать строки команды matlab для этих вопросов:

enter image description here

  1. Если начальные условия : x (0) = [2; 0] .???? ?ℎ? ???????? ? (?).
  2. Найти ответ y (t) на шаговый вход с амплитудой
  3. Найти передаточную функцию для приведенной выше модели пространства состояний
  4. Получите модель пространства состояний из (3).
a = [0,1;0,4];
b = [0;1];
c = [0 -5];
x0=[2;0];
sys = ss(a,b,c,2);
initial(sys,x0); % to get 1
[n,d]=ss2tf(a,b,c,0);
mySys_tf=tf(n,d) % to get 3
[num den] = tfdata(mySys_tf, 'v')
tf2ss(num,den) % to get 4

Я написал этот код, но, похоже, он не дает мне любые результаты в графе ответов, и поэтому я не могу также решить 2, и он получит ошибку в 4, если вы можете помочь мне проверить, что не так

Ответы [ 2 ]

1 голос
/ 14 апреля 2020

Я считаю, что ошибка происходит из-за нестабильной работы системы. Если вы построите реакцию системы на пошаговый ввод, используя step(), то вы увидите, как он уходит в бесконечность. Я также не знаю, как далеко вы находитесь в вашем курсе управления, и если вы уже видели локус root, но вы можете построить root локус системы через rlocus(sys), и вы увидите, что реальная часть root находится на правой половине плоскости и поэтому сообщает, что система нестабильна.

0 голосов
/ 14 апреля 2020
  1. Ответ равен 0 и останется нулевым как x(2) = 0. Требуется ввод u, чтобы получить x(2) от нуля. Так что с графиком все в порядке.
  2. используйте step(sys), и вы увидите падение до -Inf. При желании вы можете определить время окончания. Позвоните step(sys,1), чтобы увидеть разумный диапазон.

Вы сами решили 3 и 4.

Чтобы проверить стабильность, вам просто нужно спросить MATLAB isstable(sys) (разве это не континент? «Ну, есть опасность, что люди забудут теорию, стоящую за ней, и как она связана ...) Чтобы проверить наблюдаемость: rank(obsv(sys)) и убедитесь, что она совпадает с матрицей системы

assert(rank(obsv(sys)) == length(sys.A), 'System is not observable!')
...