我想画出传递函数的阶跃响应。等式为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的分母中输入虚数时,问题就开始了:
在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'方法,但是我想知道是否可以手动完成?
答案 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)
还请注意,没有诸如simin
和simout
方法之类的东西。有一个用于从MATLAB导入信号的模块,另一个用于将信号导出回MATLAB的模块,默认情况下分别读/写名为simin
/ simout
的MATLAB变量。但是它们不是方法。