matlab - 将分子和分母多项式分解为偶数和奇数部分

标签 matlab complex-numbers

这里有一个连续时间传递函数 (G(s)) 形式为:

G(s) = N(s)/D(s);
G(s) = (s^3+4s^2-s+1)/(s^5+2s^4+32s^3+14s^2-4s+50)     (1)

(s = j*w) 其中w = 频率符号。

现在,如何分解分子和分母 方程式的多项式。 (1) 进入偶数和奇数部分并得到 G(jw)<​​ 作为(使用 Matlab):

enter image description here

最佳答案

s=j*w 替换后,您可能会取实部和虚部。但是,您实际上可以选择多项式的偶数和奇数部分:

% G(s) = N(s)/D(s);

syms s;
N = s^3+4*s^2-s+1;

p = sym2poly(N);

%// do this in fewer lines:
%{
/*
if mod(length(p),2)==0  %// then first index is odd
    imin_o = 1;  %// for odd part
    imin_e = 2;  %// for even part
else
    imin_o = 2;  %// for odd part
    imin_e = 1;  %// for even part
end
*/
%} 
imin_o = mod(length(p),2) + 1;
imin_e = 2 - mod(length(p),2);

% odd part of numerator
p_o = zeros(size(p));
p_o(imin_o:2:end) = p(imin_o:2:end);
% even part of numerator
p_e = zeros(size(p));
p_e(imin_e:2:end) = p(imin_e:2:end);

% restore
N_o = poly2sym(p_o,s);
N_e = poly2sym(p_e,s);

分母也一样。

关于matlab - 将分子和分母多项式分解为偶数和奇数部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35276578/

相关文章:

matlab - 在 Matlab 中构造分段符号函数

arrays - 对具有最小差异的数组元素matlab

matlab - map 的主要和次要标线?

R——从函数 "polyroot"() 和 "Im()"中查找非复杂解

复数指数的 Python 与 R/Matlab 实现

c++ - 类中的运算符重载会导致范围错误

oop - 在 Matlab 中使用抽象类(无属性)

matlab - 在 MATLAB 中使用匿名函数会降低性能……其他人是否注意到了这一点?

c++ - 何时使用 std::complex<long double> 与自己的复杂数据类型(结构等)

c++ - C++ 中复 vector 与实 vector 的二维卷积