是否可以在Matlab simulink中找到用于多输入单输出传递函数的块?

问题描述 投票:0回答:1

我有一个具有两个输入和一个公共输出的系统。

让输入为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]);
matlab simulink transfer-function
1个回答
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/55085308tf1,则也可以使用tf2或使用tf1+tf2获得总和(请参见[C0 ])。

为什么这样做?

您有两个传递函数:

“Y_1 “Y_2

您对组合系统感兴趣:“Y

具有传递功能:

“\压裂{N_1(S)}

© www.soinside.com 2019 - 2024. All rights reserved.