Simulink中的复数值分母

时间:2019-01-03 12:18:08

标签: matlab simulink complex-numbers transfer-function

我想画出传递函数的阶跃响应。等式为1 / as ^ 2 + bs + c(对不起,我不知道如何在这里写分数)。为我提供了两组值和传递函数参数的相应方程式:

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

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

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

1 个答案:

答案 0 :(得分: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)

还请注意,没有诸如siminsimout方法之类的东西。有一个用于从MATLAB导入信号的模块,另一个用于将信号导出回MATLAB的模块,默认情况下分别读/写名为simin / simout的MATLAB变量。但是它们不是方法。