我有一个具有两个输入和一个公共输出的系统。
让输入为in1,in2,输出为输出。
所以我有两个传递函数:out / in1,out / in2。
使用simulink,我可以对每个传递函数使用transfer fcn块,然后对其输出求和以得到所需的输出。
但是有可能将传递函数out / in1,out / in2结合在一起,并使用一些simulink块来避免传递函数输出的总和吗?
感谢您的时间和事先的帮助!
% in symbolic
syms Ht s D K Hg
TF1 = tf([D K],[4*Hg*Ht (2*Hg*D+2*Ht*D) (2*Hg*K+2*Ht*K) 0]);
TF2 = tf([-2*Ht -D -K],[4*Hg*Ht (2*Hg*D+2*Ht*D) (2*Hg*K+2*Ht*K) 0]);
% or in numerical way
Ht = 2.2667;
Hg = 0.92952;
D = 2.29;
K = 1.0216;
TF1 = tf([D K],[4*Hg*Ht (2*Hg*D+2*Ht*D) (2*Hg*K+2*Ht*K) 0]);
TF2 = tf([-2*Ht -D -K],[4*Hg*Ht (2*Hg*D+2*Ht*D) (2*Hg*K+2*Ht*K) 0]);
有一个非常简单的解决方案。给定两个传递函数TF1=tf(num1,den1)
和TF2=tf(num2,den2)
,总和TF1+TF2
可以表示为单个传递函数tf(num1*den2+num2*den1,den1*den2)
。
对于实际实现,您将要使用conv
从分量传递函数的多项式系数向量计算分子和分母多项式。
conv
注意num = polyadd(conv(num1,den2)+conv(num2,den1));
den = conv(den1,den2);
不是内置的Matlab函数,但是您可以编写自己的代码或使用polyadd
。
[如果您已经在Matlab中具有单输入单输出(SISO)传递函数对象https://stackoverflow.com/a/55085308和tf1
,则也可以使用tf2
或使用tf1+tf2
获得总和(请参见[C0 ])。
您有两个传递函数:
您对组合系统感兴趣:
具有传递功能: