【问题标题】:Complex-value denominator in SimulinkSimulink 中的复数值分母
【发布时间】:2019-01-03 12:18:08
【问题描述】:

我想绘制传递函数的阶跃响应。等式是 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' 方法,但我想知道是否可以手动完成?

【问题讨论】:

    标签: matlab simulink complex-numbers transfer-function


    【解决方案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 变量。但它们不是方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-02
      • 1970-01-01
      • 2021-09-22
      相关资源
      最近更新 更多