求解微分方程组出现错​误,显示错误使用ve​rtcat,要串联的​数组的维度不一致”。

5 ビュー (過去 30 日間)
果博东方网站【微8785092】
果博东方网站【微8785092】 2023 年 5 月 23 日
tic
tspan=[0 200];
x0=[0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0];
mw=995.94;mbs=16.71;Jx=38.22;Jy=96.59;Jz=49.54;Jbsl=1.27*10^-3;Jbsr=1.27*10^-3;
a=1.2;b=0.5;Ksx=7.33*10^8;Ksy=3.66*10^8;Kbx=2.4*10^8;Kby=2.4*10^8; Kbz=1.38*10^8;
Knx=1.45*10^8;Kny=1.45*10^8; Knz=5.46*10^8;Kbszl=3.2*10^8;Kbszr=3.2*10^8; Kql=1.73*10^4;Kqr=1.73*10^4;
[t,y]=ode15s(@ode45_,tspan,x0);
function zdot=ode45_(t,z)
global mw mbs Jx Jy Jz Jbsl Jbsr a b Ksx Ksy Kbx Kby Kbz Knx Kny Knz Kbszl Kbszr Kql Kqr
    q1=z(1);dq1=z(2);q2=z(3);dq2=z(4);q3=z(5);dq3=z(6);q4=z(7);dq4=z(8);q5=z(9);dq5=z(10);q6=z(11);dq6=z(12);
    q7=z(13);dq7=z(14);q8=z(15);dq8=z(16);q9=z(17);dq9=z(18);q10=z(19);dq10=z(20);q11=z(21);dq11=z(22);
    q12=z(23);dq12=z(24);q13=z(25);dq13=z(26);
    M=[mw 0 0 0 0 0 0 0 0 0 0 0 0;
        0 mw 0 0 0 0 0 0 0 0 0 0 0;
        0 0 mw+2*mbs/3 0 0 0 b*mbs/3*a (a-b)*mbs/3*a 0 0 0 0 0;
        0 0 0 Jx 0 0 0 0 0 0 0 0 0;
        0 0 0 0 Jy 0 0 0 0 0 0 0 0;
        0 0 0 0 0 Jz 0 0 0 0 0 0 0;
        0 0 b*mbs/3*a 0 0 0 2*b*mbs/3*a 0 0 0 0 0 0;
        0 0 (a-b)*mbs/3*a 0 0 0 0 2*(a-b)*mbs/3*a 0 0 0 0 0;
        0 0 0 0 0 0 0 0 2*Jbsl -2*Jbsl 0 0 0;
        0 0 0 0 0 0 0 0 -2*Jbsl 2*(Jbsl+Jbsr) -2*Jbsr 0 0;
        0 0 0 0 0 0 0 0 0 -2*Jbsr 2*Jbsr 0 0;
        0 0 0 0 0 0 0 0 0 0 0 2*mbs 0;
        0 0 0 0 0 0 0 0 0 0 0 0 2*mbs];
     K=[4*Ksx*q1+2*Ksx*(ls4-ls1)*q5+4*ksx*hs*q6;
        4*Ksy*q2+2*Ksy*(ls1-ls4)*q4;
        2*(Knz+Kbszl+Kbszr)*q3-2*Kbszl*q7-2*Kbszr*q8;
        2*Ksy*(ls1-ls4)*q2+2*Ksy*(lsl^2+ls4^2)*q4;
        2*Ksx*(ls4-ls1)*q1+2*Ksx*(ls1^2+ls4^2)*q5+2*Ksx*(ls4-ls1)*hs*q6;
        4*Ksx*hs*q1+2*Ksx*(ls4-ls1)*hs*q5+4*(Ksy*ds^2+Ksx*hs^2)*q6;
        -2*Kbszr*q3+2*(Kbz+Kbszl)*q7;
        -2*Kbszr*q3+2*(Kbz+Kbszr)*q8;
        2*Kql*q9-2*Kql*q1;
        -2*Kql*q9+2*(Kql+Kqr)*q10-2*Kqr*q11;
        -2*Kqr*q10+2*Kqr*q11;
        (4*Kbx+2*Knx)*q12;
        (4*Kby+2*Kny)*q13];
    qdot=M\(-K);
    zdot=[dq1;qdot(1);dq2;qdot(2);dq3;qdot(3);dq4;qdot(4);dq5;qdot(5);dq6;qdot(6);
        dq7;qdot(7);dq8;qdot(8);dq9;qdot(9);dq10;qdot(10);dq11;qdot(11);dq12;qdot(12);dq13;qdot(13)];
end
错误使用 vertcat
要串联的数组的维度不一致。
出错 ode45_ (line 13)
M=[mw 0 0 0 0 0 0 0 0 0 0 0 0;
请大神指教该如何解决,谢谢!

採用された回答

果博东方会员开户【微8785092】
仅供参考
tic
global mw mbs Jx Jy Jz Jbsl Jbsr a b Ksx Ksy Kbx Kby Kbz Knx Kny Knz Kbszl Kbszr Kql Kqr
tspan=[0 200];
x0=[0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0];
mw=995.94;mbs=16.71;Jx=38.22;Jy=96.59;Jz=49.54;Jbsl=1.27*10^-3;Jbsr=1.27*10^-3;
a=1.2;b=0.5;Ksx=7.33*10^8;Ksy=3.66*10^8;Kbx=2.4*10^8;Kby=2.4*10^8; Kbz=1.38*10^8;
Knx=1.45*10^8;Kny=1.45*10^8; Knz=5.46*10^8;Kbszl=3.2*10^8;Kbszr=3.2*10^8; Kql=1.73*10^4;Kqr=1.73*10^4;
[t,y]=ode15s(@ode45_,tspan,x0);
function zdot=ode45_(t,z)
global mw mbs Jx Jy Jz Jbsl Jbsr a b Ksx Ksy Kbx Kby Kbz Knx Kny Knz Kbszl Kbszr Kql Kqr
    q1=z(1);dq1=z(2);q2=z(3);dq2=z(4);q3=z(5);dq3=z(6);q4=z(7);dq4=z(8);q5=z(9);dq5=z(10);q6=z(11);dq6=z(12);
    q7=z(13);dq7=z(14);q8=z(15);dq8=z(16);q9=z(17);dq9=z(18);q10=z(19);dq10=z(20);q11=z(21);dq11=z(22);
    q12=z(23);dq12=z(24);q13=z(25);dq13=z(26);
    M=[mw 0 0 0 0 0 0 0 0 0 0 0 0;
        0 mw 0 0 0 0 0 0 0 0 0 0 0;
        0 0 mw+2*mbs/3 0 0 0 b*mbs/3*a (a-b)*mbs/3*a 0 0 0 0 0;
        0 0 0 Jx 0 0 0 0 0 0 0 0 0;
        0 0 0 0 Jy 0 0 0 0 0 0 0 0;
        0 0 0 0 0 Jz 0 0 0 0 0 0 0;
        0 0 b*mbs/3*a 0 0 0 2*b*mbs/3*a 0 0 0 0 0 0;
        0 0 (a-b)*mbs/3*a 0 0 0 0 2*(a-b)*mbs/3*a 0 0 0 0 0;
        0 0 0 0 0 0 0 0 2*Jbsl -2*Jbsl 0 0 0;
        0 0 0 0 0 0 0 0 -2*Jbsl 2*(Jbsl+Jbsr) -2*Jbsr 0 0;
        0 0 0 0 0 0 0 0 0 -2*Jbsr 2*Jbsr 0 0;
        0 0 0 0 0 0 0 0 0 0 0 2*mbs 0;
        0 0 0 0 0 0 0 0 0 0 0 0 2*mbs];
     K=[4*Ksx*q1+2*Ksx*(ls4-ls1)*q5+4*ksx*hs*q6;
        4*Ksy*q2+2*Ksy*(ls1-ls4)*q4;
        2*(Knz+Kbszl+Kbszr)*q3-2*Kbszl*q7-2*Kbszr*q8;
        2*Ksy*(ls1-ls4)*q2+2*Ksy*(lsl^2+ls4^2)*q4;
        2*Ksx*(ls4-ls1)*q1+2*Ksx*(ls1^2+ls4^2)*q5+2*Ksx*(ls4-ls1)*hs*q6;
        4*Ksx*hs*q1+2*Ksx*(ls4-ls1)*hs*q5+4*(Ksy*ds^2+Ksx*hs^2)*q6;
        -2*Kbszr*q3+2*(Kbz+Kbszl)*q7;
        -2*Kbszr*q3+2*(Kbz+Kbszr)*q8;
        2*Kql*q9-2*Kql*q1;
        -2*Kql*q9+2*(Kql+Kqr)*q10-2*Kqr*q11;
        -2*Kqr*q10+2*Kqr*q11;
        (4*Kbx+2*Knx)*q12;
        (4*Kby+2*Kny)*q13];
    qdot=M\(-K);
    zdot=[dq1;qdot(1);dq2;qdot(2);dq3;qdot(3);dq4;qdot(4);dq5;qdot(5);dq6;qdot(6);
        dq7;qdot(7);dq8;qdot(8);dq9;qdot(9);dq10;qdot(10);dq11;qdot(11);dq12;qdot(12);dq13;qdot(13)];
end

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeClocks and Timers についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!