Комплексный знаменатель в Симулинке

Я хочу построить ответ шага передаточной функции. Уравнение равно 1/as^2 + bs + c (извините, я не знаю, как писать дроби здесь). Мне дали два набора значений и соответствующие уравнения для параметров передаточной функции:

a1 = [-2, -1 + 2i] (i - мнимая единица)

a2 = [-3, -1 - 2i]

а = 1

б = (а1 + а2)

с = (а1 * а2)

Первый набор значений (-2, -3) отлично работает как в Matlab, так и в Simulink. Проблема начинается, когда я хочу ввести мнимые числа в знаменателе Симулинка следующим образом:

Проблема знаменателя

В Matlab я могу сделать это с:

a1 = -1 + 2i;
a2 = -1 - 2i;
a = 1;
b = (a1 + a2);
c = (a1 * a2);

num = 1;
den = [a b c];
s = tf(num, den);
step(s);

Все же в Simulink, это всегда дает мне эту ошибку. Я знаю, что есть методы 'simout' и 'simin', но мне было интересно, можно ли это сделать вручную?

1 ответ

Решение

Функция передачи, которую вы реализуете в MATLAB, отличается от функции передачи, которую вы пытаетесь реализовать в Simulink.

В MATLAB у вас есть tf = 1/(s^2 - 2s + 5). В Simulink вы пытаетесь реализовать tf = 1/(s^2 -3s + (6-2i)).

Наличие передаточной функции со сложными коэффициентами не имеет смысла. Simulink не позволит вам сделать это, в то время как MATLAB выдаст различные предупреждения, которые означают, что он не может справиться с тем, что вы пытаетесь сделать,

>> den = [1 -3 6-2i]
den =
   1.0000 + 0.0000i  -3.0000 + 0.0000i   6.0000 - 2.0000i
>> s = tf(num, den);
Warning: The numerator or denominator of this transfer function has complex-valued
coefficients. 
> In tf (line 360) 
>> step(s)
Warning: The data cannot be plotted because it is not real valued. 
> In wavepack.waveform/draw (line 65)
  In wrfc.plot/draw (line 17)
  In wrfc.plot/init_listeners>LocalRefreshPlot (line 79)
  In DynamicSystem/stepplot (line 131)
  In DynamicSystem/step (line 92)

Обратите внимание, что нет таких вещей, как simin а также simout методы. Существует блок для импорта сигналов из MATLAB и другой для экспорта сигналов обратно в MATLAB, который по умолчанию для чтения / записи переменных MATLAB называется simin/simout соответственно. Но они не методы.

Другие вопросы по тегам