是否可以在 Matlab simulink 中找到多输入单输出传递函数的块?
Is it possible to find a block for multi-input single-output transfer function in Matlab simulink?
我的系统有两个输入和一个公共输出。
设输入为 in1、in2 和输出 - out。
所以我有两个传递函数:out/in1,out/in2。
使用 simulink 我可以为每个传递函数使用传递 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
从分量传递函数的多项式系数向量计算分子和分母多项式。
num = polyadd(conv(num1,den2),conv(num2,den1));
den = conv(den1,den2);
注意 polyadd
不是内置的 Matlab 函数,但您可以编写自己的函数或使用 。
如果您在 Matlab 中已经有了单输入单输出 (SISO) 传递函数对象 tf1
和 tf2
,您也可以使用 tf1+tf2
或通过使用 parallel(tf1,tf2,1,1,1,1)
(参见 https://www.mathworks.com/help/control/ref/parallel.html)。
为什么这样做?
你有两个传递函数:
并且您对组合系统感兴趣:
其中有传递函数:
我的系统有两个输入和一个公共输出。
设输入为 in1、in2 和输出 - out。
所以我有两个传递函数:out/in1,out/in2。
使用 simulink 我可以为每个传递函数使用传递 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
从分量传递函数的多项式系数向量计算分子和分母多项式。
num = polyadd(conv(num1,den2),conv(num2,den1));
den = conv(den1,den2);
注意 polyadd
不是内置的 Matlab 函数,但您可以编写自己的函数或使用 。
如果您在 Matlab 中已经有了单输入单输出 (SISO) 传递函数对象 tf1
和 tf2
,您也可以使用 tf1+tf2
或通过使用 parallel(tf1,tf2,1,1,1,1)
(参见 https://www.mathworks.com/help/control/ref/parallel.html)。
为什么这样做?
你有两个传递函数:
并且您对组合系统感兴趣:
其中有传递函数: