⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tau_damp.c

📁 一个simulink中调用m函数的例子
💻 C
📖 第 1 页 / 共 4 页
字号:
      &F_Bb,
      mclMtimes(
        mclMtimes(mclVv(R_fb, "R_fb"), mclVv(R_wf, "R_wf")),
        mclVv(F_Bw, "F_Bw")));
    /*
     * 
     * % force application point
     * Pf_b=[-xcp*veh.l; 0; 0];
     */
    mlfAssign(
      &Pf_b,
      mlfVertcat(
        mclFeval(
          mclValueVarargout(),
          mlxMtimes,
          mclUminus(mclVv(xcp, "xcp")),
          mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".l")),
          NULL),
        _mxarray12_,
        _mxarray12_,
        NULL));
    /*
     * 
     * % moments on B with pole in b wrt b
     * M_Bbb=vp(Pf_b,F_Bb);
     */
    mlfAssign(&M_Bbb, mlfVp(mclVv(Pf_b, "Pf_b"), mclVv(F_Bb, "F_Bb")));
    /*
     * 
     * tf=[F_Bb;M_Bbb];
     */
    mlfAssign(
      &tf, mlfVertcat(mclVv(F_Bb, "F_Bb"), mclVv(M_Bbb, "M_Bbb"), NULL));
    /*
     * 
     * % --------------------------------------------------------------
     * % forces on FIN 1 
     * 
     * % fin1 rotation matrix
     * R_1b=[cos(de(1)) 0 sin(de(1)); 0 1 0; -sin(de(1)) 0 cos(de(1))];
     */
    mlfAssign(
      &R_1b,
      mlfVertcat(
        mlfHorzcat(
          mclVe(mlfCos(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 1)))),
          _mxarray12_,
          mclVe(mlfSin(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 1)))),
          NULL),
        _mxarray16_,
        mlfHorzcat(
          mclUminus(mclVe(mlfSin(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 1))))),
          _mxarray12_,
          mclVe(mlfCos(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 1)))),
          NULL),
        NULL));
    /*
     * 
     * % relative velocity of fin1 middle point wrt c in b
     * v_1cb=vr(1:3)+vp(vr(4:6),veh.P1_b);
     */
    mlfAssign(
      &v_1cb,
      mclPlus(
        mclVe(
          mclArrayRef1(
            mclVsa(vr, "vr"), mlfColon(_mxarray6_, _mxarray7_, NULL))),
        mclVe(
          mclFeval(
            mclValueVarargout(),
            mlxVp,
            mclVe(
              mclArrayRef1(
                mclVsa(vr, "vr"), mlfColon(_mxarray8_, _mxarray9_, NULL))),
            mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".P1_b")),
            NULL))));
    /*
     * 
     * % relative velocity of fin1 middle point wrt c in 1
     * v_1c1=R_1b'*v_1cb;
     */
    mlfAssign(
      &v_1c1,
      mclMtimes(mlfCtranspose(mclVv(R_1b, "R_1b")), mclVv(v_1cb, "v_1cb")));
    /*
     * 
     * % attack angle
     * a1=atan2(v_1c1(3),v_1c1(1));
     */
    mlfAssign(
      &a1,
      mlfAtan2(
        mclVe(mclIntArrayRef1(mclVsv(v_1c1, "v_1c1"), 3)),
        mclVe(mclIntArrayRef1(mclVsv(v_1c1, "v_1c1"), 1))));
    /*
     * 
     * % fin1 wind frame rotation matrix
     * R_w1=[cos(a1) 0 -sin(a1); 0 1 0; sin(a1) 0 cos(a1)];
     */
    mlfAssign(
      &R_w1,
      mlfVertcat(
        mlfHorzcat(
          mclVe(mlfCos(mclVv(a1, "a1"))),
          _mxarray12_,
          mclUminus(mclVe(mlfSin(mclVv(a1, "a1")))),
          NULL),
        _mxarray16_,
        mlfHorzcat(
          mclVe(mlfSin(mclVv(a1, "a1"))),
          _mxarray12_,
          mclVe(mlfCos(mclVv(a1, "a1"))),
          NULL),
        NULL));
    /*
     * 
     * % cl and cd computation
     * [cl,cd]=a2clcd(a1);
     */
    mlfAssign(&cl, mlfA2clcd(&cd, mclVv(a1, "a1")));
    /*
     * 
     * % damping forces on 1 wrt w 
     * F_1w=-0.5*veh.rho*veh.sw*(v_1c1(1)^2+v_1c1(3)^2)*[cd; 0; cl];
     */
    mlfAssign(
      &F_1w,
      mclMtimes(
        mclMtimes(
          mclFeval(
            mclValueVarargout(),
            mlxMtimes,
            mclFeval(
              mclValueVarargout(),
              mlxMtimes,
              _mxarray18_,
              mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".rho")),
              NULL),
            mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".sw")),
            NULL),
          mclPlus(
            mclMpower(
              mclVe(mclIntArrayRef1(mclVsv(v_1c1, "v_1c1"), 1)), _mxarray5_),
            mclMpower(
              mclVe(mclIntArrayRef1(mclVsv(v_1c1, "v_1c1"), 3)), _mxarray5_))),
        mlfVertcat(mclVv(cd, "cd"), _mxarray12_, mclVv(cl, "cl"), NULL)));
    /*
     * 
     * % damping forces on 1 wrt b 
     * F_1b=R_1b*R_w1*F_1w;
     */
    mlfAssign(
      &F_1b,
      mclMtimes(
        mclMtimes(mclVv(R_1b, "R_1b"), mclVv(R_w1, "R_w1")),
        mclVv(F_1w, "F_1w")));
    /*
     * 
     * % moments on 1 with pole in b wrt b
     * M_1bb=vp(veh.P1_b,F_1b);
     */
    mlfAssign(
      &M_1bb,
      mclFeval(
        mclValueVarargout(),
        mlxVp,
        mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".P1_b")),
        mclVv(F_1b, "F_1b"),
        NULL));
    /*
     * 
     * t1=[F_1b;M_1bb];
     */
    mlfAssign(
      &t1, mlfVertcat(mclVv(F_1b, "F_1b"), mclVv(M_1bb, "M_1bb"), NULL));
    /*
     * 
     * % --------------------------------------------------------------
     * % forces on FIN 2 
     * 
     * % fin2 rotation matrix
     * R_2b=[cos(de(2)) 0 sin(de(2)); sin(de(2)) 0 -cos(de(2)); 0 1 0];
     */
    mlfAssign(
      &R_2b,
      mlfVertcat(
        mlfHorzcat(
          mclVe(mlfCos(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 2)))),
          _mxarray12_,
          mclVe(mlfSin(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 2)))),
          NULL),
        mlfHorzcat(
          mclVe(mlfSin(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 2)))),
          _mxarray12_,
          mclUminus(mclVe(mlfCos(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 2))))),
          NULL),
        _mxarray16_,
        NULL));
    /*
     * 
     * % relative velocity of fin2 middle point wrt c in b
     * v_2cb=vr(1:3)+vp(vr(4:6),veh.P2_b);
     */
    mlfAssign(
      &v_2cb,
      mclPlus(
        mclVe(
          mclArrayRef1(
            mclVsa(vr, "vr"), mlfColon(_mxarray6_, _mxarray7_, NULL))),
        mclVe(
          mclFeval(
            mclValueVarargout(),
            mlxVp,
            mclVe(
              mclArrayRef1(
                mclVsa(vr, "vr"), mlfColon(_mxarray8_, _mxarray9_, NULL))),
            mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".P2_b")),
            NULL))));
    /*
     * 
     * % relative velocity of fin2 middle point wrt c in 2
     * v_2c2=R_2b'*v_2cb;
     */
    mlfAssign(
      &v_2c2,
      mclMtimes(mlfCtranspose(mclVv(R_2b, "R_2b")), mclVv(v_2cb, "v_2cb")));
    /*
     * 
     * % attack angle
     * a2=atan2(v_2c2(3),v_2c2(1));
     */
    mlfAssign(
      &a2,
      mlfAtan2(
        mclVe(mclIntArrayRef1(mclVsv(v_2c2, "v_2c2"), 3)),
        mclVe(mclIntArrayRef1(mclVsv(v_2c2, "v_2c2"), 1))));
    /*
     * 
     * % fin2 wind frame rotation matrix
     * R_w2=[cos(a2) 0 -sin(a2); 0 1 0; sin(a2) 0 cos(a2)];
     */
    mlfAssign(
      &R_w2,
      mlfVertcat(
        mlfHorzcat(
          mclVe(mlfCos(mclVv(a2, "a2"))),
          _mxarray12_,
          mclUminus(mclVe(mlfSin(mclVv(a2, "a2")))),
          NULL),
        _mxarray16_,
        mlfHorzcat(
          mclVe(mlfSin(mclVv(a2, "a2"))),
          _mxarray12_,
          mclVe(mlfCos(mclVv(a2, "a2"))),
          NULL),
        NULL));
    /*
     * 
     * % cl and cd computation
     * [cl,cd]=a2clcd(a2);
     */
    mlfAssign(&cl, mlfA2clcd(&cd, mclVv(a2, "a2")));
    /*
     * 
     * % damping forces on 2 wrt w 
     * F_2w=-0.5*veh.rho*veh.sw*(v_2c2(1)^2+v_2c2(3)^2)*[cd; 0; cl];
     */
    mlfAssign(
      &F_2w,
      mclMtimes(
        mclMtimes(
          mclFeval(
            mclValueVarargout(),
            mlxMtimes,
            mclFeval(
              mclValueVarargout(),
              mlxMtimes,
              _mxarray18_,
              mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".rho")),
              NULL),
            mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".sw")),
            NULL),
          mclPlus(
            mclMpower(
              mclVe(mclIntArrayRef1(mclVsv(v_2c2, "v_2c2"), 1)), _mxarray5_),
            mclMpower(
              mclVe(mclIntArrayRef1(mclVsv(v_2c2, "v_2c2"), 3)), _mxarray5_))),
        mlfVertcat(mclVv(cd, "cd"), _mxarray12_, mclVv(cl, "cl"), NULL)));
    /*
     * 
     * % damping forces on 2 wrt b 
     * F_2b=R_2b*R_w2*F_2w;
     */
    mlfAssign(
      &F_2b,
      mclMtimes(
        mclMtimes(mclVv(R_2b, "R_2b"), mclVv(R_w2, "R_w2")),
        mclVv(F_2w, "F_2w")));
    /*
     * 
     * % moments on 2 with pole in b wrt b
     * M_2bb=vp(veh.P2_b,F_2b);
     */
    mlfAssign(
      &M_2bb,
      mclFeval(
        mclValueVarargout(),
        mlxVp,
        mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".P2_b")),
        mclVv(F_2b, "F_2b"),
        NULL));
    /*
     * 
     * t2=[F_2b;M_2bb];
     */
    mlfAssign(
      &t2, mlfVertcat(mclVv(F_2b, "F_2b"), mclVv(M_2bb, "M_2bb"), NULL));
    /*
     * 
     * % --------------------------------------------------------------
     * % forces on FIN 3 
     * 
     * % fin3 rotation matrix
     * R_3b=[cos(de(3)) 0 sin(de(3));  0 -1 0; sin(de(3)) 0 -cos(de(3))];
     */
    mlfAssign(
      &R_3b,
      mlfVertcat(
        mlfHorzcat(
          mclVe(mlfCos(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 3)))),
          _mxarray12_,
          mclVe(mlfSin(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 3)))),
          NULL),
        _mxarray19_,
        mlfHorzcat(
          mclVe(mlfSin(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 3)))),
          _mxarray12_,
          mclUminus(mclVe(mlfCos(mclVe(mclIntArrayRef1(mclVsa(de, "de"), 3))))),
          NULL),
        NULL));
    /*
     * 
     * % relative velocity of fin3 middle point wrt c in b
     * v_3cb=vr(1:3)+vp(vr(4:6),veh.P3_b);
     */
    mlfAssign(
      &v_3cb,
      mclPlus(
        mclVe(
          mclArrayRef1(
            mclVsa(vr, "vr"), mlfColon(_mxarray6_, _mxarray7_, NULL))),
        mclVe(
          mclFeval(
            mclValueVarargout(),
            mlxVp,
            mclVe(
              mclArrayRef1(
                mclVsa(vr, "vr"), mlfColon(_mxarray8_, _mxarray9_, NULL))),
            mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".P3_b")),
            NULL))));
    /*
     * 
     * % relative velocity of fin3 middle point wrt c in 3
     * v_3c3=R_3b'*v_3cb;
     */
    mlfAssign(
      &v_3c3,
      mclMtimes(mlfCtranspose(mclVv(R_3b, "R_3b")), mclVv(v_3cb, "v_3cb")));
    /*
     * 
     * % attack angle
     * a3=atan2(v_3c3(3),v_3c3(1));
     */
    mlfAssign(
      &a3,
      mlfAtan2(
        mclVe(mclIntArrayRef1(mclVsv(v_3c3, "v_3c3"), 3)),
        mclVe(mclIntArrayRef1(mclVsv(v_3c3, "v_3c3"), 1))));
    /*
     * 
     * % fin3 wind frame rotation matrix
     * R_w3=[cos(a3) 0 -sin(a3); 0 1 0; sin(a3) 0 cos(a3)];
     */
    mlfAssign(
      &R_w3,
      mlfVertcat(
        mlfHorzcat(
          mclVe(mlfCos(mclVv(a3, "a3"))),
          _mxarray12_,
          mclUminus(mclVe(mlfSin(mclVv(a3, "a3")))),
          NULL),
        _mxarray16_,
        mlfHorzcat(
          mclVe(mlfSin(mclVv(a3, "a3"))),
          _mxarray12_,
          mclVe(mlfCos(mclVv(a3, "a3"))),
          NULL),
        NULL));
    /*
     * 
     * % cl and cd computation
     * [cl,cd]=a2clcd(a3);
     */
    mlfAssign(&cl, mlfA2clcd(&cd, mclVv(a3, "a3")));
    /*
     * 
     * % damping forces on 3 wrt w 
     * F_3w=-0.5*veh.rho*veh.sw*(v_3c3(1)^2+v_3c3(3)^2)*[cd; 0; cl];
     */
    mlfAssign(
      &F_3w,
      mclMtimes(
        mclMtimes(
          mclFeval(
            mclValueVarargout(),
            mlxMtimes,
            mclFeval(
              mclValueVarargout(),
              mlxMtimes,
              _mxarray18_,
              mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".rho")),
              NULL),
            mclVe(mlfIndexRef(mclVsa(veh, "veh"), ".sw")),
            NULL),
          mclPlus(
            mclMpower(
              mclVe(mclIntArrayRef1(mclVsv(v_3c3, "v_3c3"), 1)), _mxarray5_),
            mclMpower(
              mclVe(mclIntArrayRef1(mclVsv(v_3c3, "v_3c3"), 3)), _mxarray5_))),
        mlfVertcat(mclVv(cd, "cd"), _mxarray12_, mclVv(cl, "cl"), NULL)));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -