在Simulink中实现复杂的功能

时间:2013-05-12 17:58:39

标签: matlab simulink

在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中,我使用From和Goto块来表示所有参数(Tc1,J1,J2,J3,t1,t2,t3等)。

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

1 个答案:

答案 0 :(得分:2)

  1. 第一种方法是使用来自用户定义函数的Fcn块,只需在一行中编写函数,并使用u(1)u(2)等输入。
  2. Fcn块将指定的数学表达式应用于其输入。表达式可以包括以下一个或多个组件:

    • u - 块的输入。如果u是向量,u(i)代表 向量的第i个元素;仅u(1)u代表 第一要素。
    • 数字常量。
    • 算术运算符(+ - * / ^)。
    • 关系运算符(== != > < >= <=) - 如果关系为真,则表达式返回1;否则,它返回 0
    • 逻辑运算符(&& || !) - 表达式返回1 如果关系是真的;否则,它返回0
    • 括号中。
    • 数学函数 - absacosasinatanatan2ceilcoscoshexpfabsfloorhypotln,{{ 1}}, loglog10powpowerremsgnsinsinh,{{ 1}}, 和sqrt

    检查此link


    1. 第二种方法是使用来自用户定义函数的tan并编写嵌入式tanh中的所有函数。然后将所有输入和输出连接到它。
    2. 检查此link