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

📄 tau_damp.c

📁 一个simulink中调用m函数的例子
💻 C
📖 第 1 页 / 共 3 页
字号:
     * 
     * % 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,
      mlfPlus(
        mlfIndexRef(vr, "(?)", mlfColon(mlfScalar(1.0), mlfScalar(3.0), NULL)),
        mlfFeval(
          mclValueVarargout(),
          mlxVp,
          mlfIndexRef(
            vr, "(?)", mlfColon(mlfScalar(4.0), mlfScalar(6.0), NULL)),
          mlfIndexRef(veh, ".P2_b"),
          NULL)));
    /*
     * 
     * % relative velocity of fin2 middle point wrt c in 2
     * v_2c2=R_2b'*v_2cb;
     */
    mlfAssign(&v_2c2, mlfMtimes(mlfCtranspose(R_2b), v_2cb));
    /*
     * 
     * % attack angle
     * a2=atan2(v_2c2(3),v_2c2(1));
     */
    mlfAssign(
      &a2,
      mlfAtan2(
        mlfIndexRef(v_2c2, "(?)", mlfScalar(3.0)),
        mlfIndexRef(v_2c2, "(?)", mlfScalar(1.0))));
    /*
     * 
     * % 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(mlfCos(a2), mlfScalar(0.0), mlfUminus(mlfSin(a2)), NULL),
        mlfDoubleMatrix(1, 3, __Array13_r, NULL),
        mlfHorzcat(mlfSin(a2), mlfScalar(0.0), mlfCos(a2), NULL),
        NULL));
    /*
     * 
     * % cl and cd computation
     * [cl,cd]=a2clcd(a2);
     */
    mlfAssign(&cl, mlfA2clcd(&cd, 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,
      mlfMtimes(
        mlfMtimes(
          mlfFeval(
            mclValueVarargout(),
            mlxMtimes,
            mlfFeval(
              mclValueVarargout(),
              mlxMtimes,
              mlfScalar(-0.5),
              mlfIndexRef(veh, ".rho"),
              NULL),
            mlfIndexRef(veh, ".sw"),
            NULL),
          mlfPlus(
            mlfMpower(
              mlfIndexRef(v_2c2, "(?)", mlfScalar(1.0)), mlfScalar(2.0)),
            mlfMpower(
              mlfIndexRef(v_2c2, "(?)", mlfScalar(3.0)), mlfScalar(2.0)))),
        mlfVertcat(
          mlfHorzcat(cd, NULL),
          mlfDoubleMatrix(1, 1, __Array14_r, NULL),
          mlfHorzcat(cl, NULL),
          NULL)));
    /*
     * 
     * % damping forces on 2 wrt b 
     * F_2b=R_2b*R_w2*F_2w;
     */
    mlfAssign(&F_2b, mlfMtimes(mlfMtimes(R_2b, R_w2), F_2w));
    /*
     * 
     * % moments on 2 with pole in b wrt b
     * M_2bb=vp(veh.P2_b,F_2b);
     */
    mlfAssign(
      &M_2bb,
      mlfFeval(
        mclValueVarargout(), mlxVp, mlfIndexRef(veh, ".P2_b"), F_2b, NULL));
    /*
     * 
     * t2=[F_2b;M_2bb];
     */
    mlfAssign(
      &t2, mlfVertcat(mlfHorzcat(F_2b, NULL), mlfHorzcat(M_2bb, NULL), 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(
          mlfCos(mlfIndexRef(de, "(?)", mlfScalar(3.0))),
          mlfScalar(0.0),
          mlfSin(mlfIndexRef(de, "(?)", mlfScalar(3.0))),
          NULL),
        mlfDoubleMatrix(1, 3, __Array15_r, NULL),
        mlfHorzcat(
          mlfSin(mlfIndexRef(de, "(?)", mlfScalar(3.0))),
          mlfScalar(0.0),
          mlfUminus(mlfCos(mlfIndexRef(de, "(?)", mlfScalar(3.0)))),
          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,
      mlfPlus(
        mlfIndexRef(vr, "(?)", mlfColon(mlfScalar(1.0), mlfScalar(3.0), NULL)),
        mlfFeval(
          mclValueVarargout(),
          mlxVp,
          mlfIndexRef(
            vr, "(?)", mlfColon(mlfScalar(4.0), mlfScalar(6.0), NULL)),
          mlfIndexRef(veh, ".P3_b"),
          NULL)));
    /*
     * 
     * % relative velocity of fin3 middle point wrt c in 3
     * v_3c3=R_3b'*v_3cb;
     */
    mlfAssign(&v_3c3, mlfMtimes(mlfCtranspose(R_3b), v_3cb));
    /*
     * 
     * % attack angle
     * a3=atan2(v_3c3(3),v_3c3(1));
     */
    mlfAssign(
      &a3,
      mlfAtan2(
        mlfIndexRef(v_3c3, "(?)", mlfScalar(3.0)),
        mlfIndexRef(v_3c3, "(?)", mlfScalar(1.0))));
    /*
     * 
     * % 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(mlfCos(a3), mlfScalar(0.0), mlfUminus(mlfSin(a3)), NULL),
        mlfDoubleMatrix(1, 3, __Array16_r, NULL),
        mlfHorzcat(mlfSin(a3), mlfScalar(0.0), mlfCos(a3), NULL),
        NULL));
    /*
     * 
     * % cl and cd computation
     * [cl,cd]=a2clcd(a3);
     */
    mlfAssign(&cl, mlfA2clcd(&cd, 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,
      mlfMtimes(
        mlfMtimes(
          mlfFeval(
            mclValueVarargout(),
            mlxMtimes,
            mlfFeval(
              mclValueVarargout(),
              mlxMtimes,
              mlfScalar(-0.5),
              mlfIndexRef(veh, ".rho"),
              NULL),
            mlfIndexRef(veh, ".sw"),
            NULL),
          mlfPlus(
            mlfMpower(
              mlfIndexRef(v_3c3, "(?)", mlfScalar(1.0)), mlfScalar(2.0)),
            mlfMpower(
              mlfIndexRef(v_3c3, "(?)", mlfScalar(3.0)), mlfScalar(2.0)))),
        mlfVertcat(
          mlfHorzcat(cd, NULL),
          mlfDoubleMatrix(1, 1, __Array17_r, NULL),
          mlfHorzcat(cl, NULL),
          NULL)));
    /*
     * 
     * % damping forces on 3 wrt b 
     * F_3b=R_3b*R_w3*F_3w;
     */
    mlfAssign(&F_3b, mlfMtimes(mlfMtimes(R_3b, R_w3), F_3w));
    /*
     * 
     * % moments on 3 with pole in b wrt b
     * M_3bb=vp(veh.P3_b,F_3b);
     */
    mlfAssign(
      &M_3bb,
      mlfFeval(
        mclValueVarargout(), mlxVp, mlfIndexRef(veh, ".P3_b"), F_3b, NULL));
    /*
     * 
     * t3=[F_3b;M_3bb];
     */
    mlfAssign(
      &t3, mlfVertcat(mlfHorzcat(F_3b, NULL), mlfHorzcat(M_3bb, NULL), NULL));
    /*
     * 
     * % --------------------------------------------------------------
     * % forces on FIN 4 
     * 
     * % fin4 rotation matrix
     * R_4b=[cos(de(4)) 0 sin(de(4)); -sin(de(4)) 0 cos(de(4));  0 -1 0];
     */
    mlfAssign(
      &R_4b,
      mlfVertcat(
        mlfHorzcat(
          mlfCos(mlfIndexRef(de, "(?)", mlfScalar(4.0))),
          mlfScalar(0.0),
          mlfSin(mlfIndexRef(de, "(?)", mlfScalar(4.0))),
          NULL),
        mlfHorzcat(
          mlfUminus(mlfSin(mlfIndexRef(de, "(?)", mlfScalar(4.0)))),
          mlfScalar(0.0),
          mlfCos(mlfIndexRef(de, "(?)", mlfScalar(4.0))),
          NULL),
        mlfDoubleMatrix(1, 3, __Array18_r, NULL),
        NULL));
    /*
     * 
     * % relative velocity of fin4 middle point wrt c in b
     * v_4cb=vr(1:3)+vp(vr(4:6),veh.P4_b);
     */
    mlfAssign(
      &v_4cb,
      mlfPlus(
        mlfIndexRef(vr, "(?)", mlfColon(mlfScalar(1.0), mlfScalar(3.0), NULL)),
        mlfFeval(
          mclValueVarargout(),
          mlxVp,
          mlfIndexRef(
            vr, "(?)", mlfColon(mlfScalar(4.0), mlfScalar(6.0), NULL)),
          mlfIndexRef(veh, ".P4_b"),
          NULL)));
    /*
     * 
     * % relative velocity of fin4 middle point wrt c in 4
     * v_4c4=R_4b'*v_4cb;
     */
    mlfAssign(&v_4c4, mlfMtimes(mlfCtranspose(R_4b), v_4cb));
    /*
     * 
     * % attack angle
     * a4=atan2(v_4c4(3),v_4c4(1));
     */
    mlfAssign(
      &a4,
      mlfAtan2(
        mlfIndexRef(v_4c4, "(?)", mlfScalar(3.0)),
        mlfIndexRef(v_4c4, "(?)", mlfScalar(1.0))));
    /*
     * 
     * % fin4 wind frame rotation matrix
     * R_w4=[cos(a4) 0 -sin(a4); 0 1 0; sin(a4) 0 cos(a4)];
     */
    mlfAssign(
      &R_w4,
      mlfVertcat(
        mlfHorzcat(mlfCos(a4), mlfScalar(0.0), mlfUminus(mlfSin(a4)), NULL),
        mlfDoubleMatrix(1, 3, __Array19_r, NULL),
        mlfHorzcat(mlfSin(a4), mlfScalar(0.0), mlfCos(a4), NULL),
        NULL));
    /*
     * 
     * % cl and cd computation
     * [cl,cd]=a2clcd(a4);
     */
    mlfAssign(&cl, mlfA2clcd(&cd, a4));
    /*
     * 
     * % damping forces on 4 wrt w 
     * F_4w=-0.5*veh.rho*veh.sw*(v_4c4(1)^2+v_4c4(3)^2)*[cd; 0; cl];
     */
    mlfAssign(
      &F_4w,
      mlfMtimes(
        mlfMtimes(
          mlfFeval(
            mclValueVarargout(),
            mlxMtimes,
            mlfFeval(
              mclValueVarargout(),
              mlxMtimes,
              mlfScalar(-0.5),
              mlfIndexRef(veh, ".rho"),
              NULL),
            mlfIndexRef(veh, ".sw"),
            NULL),
          mlfPlus(
            mlfMpower(
              mlfIndexRef(v_4c4, "(?)", mlfScalar(1.0)), mlfScalar(2.0)),
            mlfMpower(
              mlfIndexRef(v_4c4, "(?)", mlfScalar(3.0)), mlfScalar(2.0)))),
        mlfVertcat(
          mlfHorzcat(cd, NULL),
          mlfDoubleMatrix(1, 1, __Array20_r, NULL),
          mlfHorzcat(cl, NULL),
          NULL)));
    /*
     * 
     * % damping forces on 4 wrt b 
     * F_4b=R_4b*R_w4*F_4w;
     */
    mlfAssign(&F_4b, mlfMtimes(mlfMtimes(R_4b, R_w4), F_4w));
    /*
     * 
     * % moments on 4 with pole in b wrt b
     * M_4bb=vp(veh.P4_b,F_4b);
     */
    mlfAssign(
      &M_4bb,
      mlfFeval(
        mclValueVarargout(), mlxVp, mlfIndexRef(veh, ".P4_b"), F_4b, NULL));
    /*
     * 
     * t4=[F_4b;M_4bb];
     */
    mlfAssign(
      &t4, mlfVertcat(mlfHorzcat(F_4b, NULL), mlfHorzcat(M_4bb, NULL), NULL));
    /*
     * 
     * % --------------------------------------------------------------
     * % forces on FIN 5 
     * 
     * % fin5 rotation matrix
     * R_5b=[cos(de(5)) 0 sin(de(5)); 0 1 0; -sin(de(5)) 0 cos(de(5))];
     */
    mlfAssign(
      &R_5b,
      mlfVertcat(
        mlfHorzcat(
          mlfCos(mlfIndexRef(de, "(?)", mlfScalar(5.0))),
          mlfScalar(0.0),
          mlfSin(mlfIndexRef(de, "(?)", mlfScalar(5.0))),
          NULL),
        mlfDoubleMatrix(1, 3, __Array21_r, NULL),
        mlfHorzcat(
          mlfUminus(mlfSin(mlfIndexRef(de, "(?)", mlfScalar(5.0)))),
          mlfScalar(0.0),
          mlfCos(mlfIndexRef(de, "(?)", mlfScalar(5.0))),
          NULL),
        NULL));
    /*
     * 
     * % relative velocity of fin5 middle point wrt c in b
     * v_5cb=vr(1:3)+vp(vr(4:6),veh.P5_b);
     */
    mlfAssign(
      &v_5cb,
      mlfPlus(
        mlfIndexRef(vr, "(?)", mlfColon(mlfScalar(1.0), mlfScalar(3.0), NULL)),
        mlfFeval(
          mclValueVarargout(),
          mlxVp,
          mlfIndexRef(
            vr, "(?)", mlfColon(mlfScalar(4.0), mlfScalar(6.0), NULL)),
          mlfIndexRef(veh, ".P5_b"),
          NULL)));
    /*
     * 
     * % relative velocity of fin5 middle point wrt c in 5
     * v_5c5=R_5b'*v_5cb;
     */
    mlfAssign(&v_5c5, mlfMtimes(mlfCtranspose(R_5b), v_5cb));
    /*
     * 
     * % attack angle
     * a5=atan2(v_5c5(3),v_5c5(1));
     */
    mlfAssign(
      &a5,
      mlfAtan2(
        mlfIndexRef(v_5c5, "(?)", mlfScalar(3.0)),
        mlfIndexRef(v_5c5, "(?)", mlfScalar(1.0))));
    /*
     * 
     * % fin5 wind frame rotation matrix
     * R_w5=[cos(a5) 0 -sin(a5); 0 1 0; sin(a5) 0 cos(a5)];
     */
    mlfAssign(
      &R_w5,
      mlfVertcat(
        mlfHorzcat(mlfCos(a5), mlfScalar(0.0), mlfUminus(mlfSin(a5)), NULL),
        mlfDoubleMatrix(1, 3, __Array22_r, NULL),
        mlfHorzcat(mlfSin(a5), mlfScalar(0.0), mlfCos(a5), NULL),
        NULL));
    /*
     * 
     * % cl and cd computation
     * [cl,cd]=a2clcd(a5);
     */
    mlfAssign(&cl, mlfA2clcd(&cd, a5));
    /*
     * 
     * % damping forces on 5 wrt w 
     * F_5w=-0.5*veh.rho*veh.st*(v_5c5(1)^2+v_5c5(3)^2)*[cd; 0; cl];
     */
    mlfAssign(
      &F_5w,
      mlfMtimes(
        mlfMtimes(
          mlfFeval(
            mclValueVarargout(),
            mlxMtimes,
            mlfFeval(
              mclValueVarargout(),
              mlxMtimes,
              mlfScalar(-0.5),
              mlfIndexRef(veh, ".rho"),
              NULL),
            mlfIndexRef(veh, ".st"),
            NULL),
          mlfPlus(
            mlfMpower(
              mlfIndexRef(v_5c5, "(?)", mlfScalar(1.0)), mlfScalar(2.0)),
            mlfMpower(
              mlfIndexRef(v_5c5, "(?)", mlfScalar(3.0)), mlfScalar(2.0)))),
        mlfVertcat(
          mlfHorzcat(cd, NULL),
          mlfDoubleMatrix(1, 1, __Array23_r, NULL),
          mlfHorzcat(cl, NULL),
          NULL)));
    /*
     * 
     * % damping forces on 5 wrt b 
     * F_5b=R_5b*R_w5*F_5w;
     */
    mlfAssign(&F_5b, mlfMtimes(mlfMtimes(R_5b, R_w5), F_5w));
    /*
     * 
     * % moments on 5 with pole in b wrt b
     * M_5bb=vp(veh.P5_b,F_5b);
     */
    mlfAssign(
      &M_5bb,
      mlfFeval(
        mclValueVarargout(), mlxVp, mlfIndexRef(veh, ".P5_b"), F_5b, NULL));
    /*
     * 
     * t5=[F_5b;M_5bb];
     */
    mlfAssign(
      &t5, mlfVertcat(mlfHorzcat(F_5b, NULL), mlfHorzcat(M_5bb, NULL), NULL));
    /*
     * 
     * % --------------------------------------------------------------
     * % forces on FIN 6 
     * 
     * % fin6 rotation matrix
     * R_6b=[cos(de(6)) 0 sin(de(6)); sin(de(6)) 0 -cos(de(6)); 0 1 0];
     */
    mlfAssign(
      &R_6b,
      mlfVertcat(
        mlfHorzcat(
          mlfCos(mlfIndexRef(de, "(?)", mlfScalar(6.0))),
          mlfScalar(0.0),
          mlfSin(mlfIndexRef(de, "(?)", mlfScalar(6.0))),
          NULL),
        mlfHorzcat(
          mlfSin(mlfIndexRef(de, "(?)", mlfScalar(6.0))),
          mlfScalar(0.0),
          mlfUminus(mlfCos(mlfIndexRef(de, "(?)", mlfScalar(6.0)))),
          NULL),
        mlfDoubleMatrix(1, 3, __Array24_r, NULL),
        NULL));
    /*
     * 
     * % relative velocity of fin6 middle point wrt c in b
     * v_6cb=vr(1:3)+vp(vr(4:6),veh.P6_b);
     */
    mlfAssign(
      &v_6cb,
      mlfPlus(
        mlfIndexRef(vr, "(?)", mlfColon(mlfScalar(1.0), mlfScalar(3.0), NULL)),

⌨️ 快捷键说明

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