【问题标题】:Implementing a complex function in Simulink在 Simulink 中实现一个复杂的函数
【发布时间】:2013-05-12 17:58:38
【问题描述】:

在 Matlab 的命令窗口中,我得到了几个方程,如下所示:

Tc1 = (- 2*J2*cos(t3)*sin(t1)*sin(t3)*n^2 + 2*J2*w3*sin(t3)*n)/cos(t2) - d2 + cos(t2)*(J2*cos(t3)*sin(t1)*sin(t3)*n^2 + J2*v3*sin(t1)) + J1*w1*w3 + J2*w1*w3 - J3*w1*w3 + J2*v2*cos(t1) + J2*n^2*cos(t1)*tan(t2) - J2*w2^2*cos(t1)*tan(t2) + 2*J2*w3^2*cos(t1)*tan(t2) + J2*w2^2*cos(t1)^3*tan(t2) - J2*w3^2*cos(t1)^3*tan(t2) - 2*J2*n*w2*cos(t3)*tan(t2) + 2*J2*w2*w3*sin(t1)*tan(t2) - J2*n^2*cos(t1)*cos(t3)^2*tan(t2) + 2*J2*n*w2*cos(t1)^2*cos(t3)*tan(t2) - 2*J2*w2*w3*cos(t1)^2*sin(t1)*tan(t2) - 2*J2*n*w3*cos(t1)*cos(t3)*sin(t1)*tan(t2)         

在 Simulink 中,我对所有参数(Tc1、J1、J2、J3、t1、t2、t3 等)使用 From 和 Goto 模块。

现在我想知道在 Simulink 中实现这些长公式进行仿真最简单的方法是什么。通常我会使用 Simulink 中的各种模块重建方程,但这次我最终得到的方程要长得多。有任何想法吗?

【问题讨论】:

    标签: matlab simulink


    【解决方案1】:
    1. 第一种方法是使用用户定义函数中的Fcn 块,只需在一行中编写函数并使用u(1)u(2)、....等输入

    Fcn 块将指定的数学表达式应用于其输入。表达式可以包含以下一个或多个组件:

    • u — 块的输入。如果u是一个向量,u(i)代表 向量的第 i 个元素; u(1)u 单独代表 第一个元素。
    • 数字常量。
    • 算术运算符(+-*/^)。
    • 关系运算符(==!=><>=<=)—— 如果关系为真,则表达式返回1;否则,它返回 0
    • 逻辑运算符 (&& || !) — 表达式返回 1 如果关系为真;否则,它返回0
    • 括号。
    • 数学函数 — absacosasinatanatan2ceil, cos, cosh, exp, fabs, floor, hypot, ln, log, log10, pow, power, rem, sgn, sin, sinh, sqrt, tan, 和tanh

    检查这个link


    1. 第二种方法是使用用户定义函数中的Matlab Function,并将您拥有的所有函数写入嵌入的m-file。然后将所有输入和输出连接到它。

    检查这个link

    【讨论】:

    • 我已经实现了第二种方法,效果很好,非常感谢!
    猜你喜欢
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 2023-03-26
    • 2011-07-20
    相关资源
    最近更新 更多