Simulink 中的复值分母

Complex-value denominator in Simulink

我想绘制传递函数的阶跃响应。方程是 1/as^2 + bs + c(抱歉,我不知道这里的分数怎么写)。我得到了两组值,以及传递函数参数的相应方程式:

a1 = [-2, -1 + 2i](i为虚数单位)

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

一=1

b = (a1 + a2)

c = (a1 * a2)

第一组值 (-2, -3) 在 Matlab 和 Simulink 中都能完美运行。当我想像这样在 Simulink 的分母中输入虚数时,问题就开始了:

Denominator problem

在 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' 方法,但我想知道是否可以手动完成?

您在 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)

另请注意,没有 siminsimout 方法。有一个块用于从 MATLAB 导入信号,另一个用于将信号导出回 MATLAB,默认情况下 read/write 个 MATLAB 变量分别命名为 simin/simout。但它们不是方法。