【问题标题】:Is it possible to find a block for multi-input single-output transfer function in Matlab simulink?是否可以在 Matlab simulink 中找到用于多输入单输出传递函数的模块?
【发布时间】:2019-10-23 14:03:18
【问题描述】:

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

让输入为 in1、in2 和输出 - out。

所以我有两个传递函数: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]);

【问题讨论】:

  • 你无法避免对它们求和,但你可以根据需要隐藏该操作,只需创建一个包含 2 次传输和总和的自定义块

标签: matlab simulink transfer-function


【解决方案1】:

对此有一个非常简单的解决方案。给定两个传递函数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函数,但您可以自己编写或使用https://stackoverflow.com/a/55085308

如果您在 Matlab 中已经有了单输入单输出 (SISO) 传递函数对象 tf1tf2,您还可以使用 tf1+tf2 或使用 parallel(tf1,tf2,1,1,1,1) 获得总和(参见 @ 987654323@)。

为什么会这样?

你有两个传递函数:



并且您对组合系统感兴趣:

具有传递函数:

【讨论】:

    猜你喜欢
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多