Как суммировать двухступенчатые ответы одной и той же системы в MATLAB? - PullRequest
1 голос
/ 03 мая 2011

Я пытаюсь построить ответ системы управления, которая имеет два единичных шага - один при t = 0 и один при t = 0,3

Вот код, который я использую:

% Set up the transfer function
numer = [K*K_m*r];
denom = [(L_m*J_e) (L_m*b_m+R_m*J_e) (K_b*K_m+R_m*b_m) K*K_m*r];
transfun = tf(numer, denom);

% Apply a step function at t=0
[y,T] = step(transfun, 0:0.001:0.5);

% Second step function at t=0.3
[y_b, T_b] = step(transfun, 0.3:0.001:0.5);

% How to add the above two outputs together?
plot( ???? )

Я искал в Google, но единственное решение, которое я могу найти, - это системы с несколькими входами (MIMO). Эта система имеет только один вход, я просто хочу использовать принцип суперпозиции, чтобы сложить их вместе.

Когда я пытаюсь сложить два вектора вместе, я получаю «Векторы должны быть одинаковой длины».

1 Ответ

1 голос
/ 03 мая 2011

То, что вы пытаетесь сделать, это не пошаговый ответ.Ответ шага измеряет способность системы отслеживать постоянный ввод, а то, что вы предлагаете, не является постоянным вводом.

Чтобы делать то, что вы хотите, посмотрите на lsim функцию ифункция gensig .

(Примечание: почему вы не можете добавить свои векторы, первое идет от 0 до 0,5 с шагом 0,001, а другое - от 0,3 до 0,5с шагом 0,001. Конечно, они будут разной длины! Если вы действительно хотите сложить их вместе, сделайте что-то вроде:

[y_b, T_b] = step(transfun, 0:0.001:0.5);
y_b(T_b<0.3) = 0;

Я не могу проверить это в данный момент, ноесли это не сработает, попробуйте:

y_b(0:0.001:0.3) = 0;

)

...