matlab - 如何分离传递函数的实部和虚部?

标签 matlab transfer-function

这是一个传递函数:

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)

然后您可以使用 subsvpa/double 来评估它们的特定值 omega

关于matlab - 如何分离传递函数的实部和虚部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35240285/

相关文章:

带有 plot3 和 scatter3 模糊的 matlab 图?

android - 在android中创建数字过滤器

c - 如何在 C/C++ 中实现进程调节器?

Matlab 添加两个传递函数

image - 水平和垂直一维高斯滤波器

python - 如何提取Matlab的datenum的小数部分?

c++ - 找不到 Mexopencv mex 文件

matlab - 由于矢量化时内存不足,因此加快了 for 循环的速度