【发布时间】:2016-02-06 11:09:20
【问题描述】:
这是一个传递函数:
S = [tf([10 2 4],[1 95 2000 3450])];
如何获得real(S) 和Imag(S)?
【问题讨论】:
-
你期望什么输出?符号表达式的数值数据?
-
我需要 (imag(S(s=jw))) 或实数 (S(s=jw)) 的符号形式,其中 w 是频率符号。
这是一个传递函数:
S = [tf([10 2 4],[1 95 2000 3450])];
如何获得real(S) 和Imag(S)?
【问题讨论】:
听起来您想要传递函数的傅里叶形式。据我所知,没有内置函数,所以你需要使用符号数学:
num = [10 2 4];
den = [1 95 2000 3450];
syms s;
syms omega real; % Define as real-valued
f1 = poly2sym(num,s)/poly2sym(den,s)
f2 = subs(f1,s,1i*omega)
f2_real = simplify(real(f2))
f2_imag = simplify(imag(f2))
返回
f1 =
(10*s^2 + 2*s + 4)/(s^3 + 95*s^2 + 2000*s + 3450)
f2 =
(- 10*omega^2 + omega*2i + 4)/(- omega^3*1i - 95*omega^2 + omega*2000i + 3450)
f2_real =
(4*(237*omega^4 - 7720*omega^2 + 3450))/(omega^6 + 5025*omega^4 + 3344500*omega^2 + 11902500)
f2_imag =
-(2*omega*(5*omega^4 - 9907*omega^2 + 550))/(omega^6 + 5025*omega^4 + 3344500*omega^2 + 11902500)
然后您可以使用subs 和vpa/double 来评估这些omega 的特定值。
【讨论】: