当前位置:编程学习 > Matlab >>

求高手指教MATLAB程序,运行后出现??? Error using ==> crank_slider_velocity Too many input arguments百度知道

%calculate the shaking force of crank-slider clear all;close all; figure_option=0; LOD=150;C1=120;C2=50;C3=50;C4=120;G3=160;G5=320;LOA=75;LDB=100;LBC=100;LDY=93.3;JS3=0.14; theta1=0:5:360; theta1=theta1*pi/180; vtheta1=60*60*pi/180; A=[0,0]'; dt=1e-6; for i=1:1:73 [A,B,C,S3,theta3]=crank_slider_position(theta1,LOD,C1,C2,C3,C4,LOA,LDB,LBC); [vA,vB,vC,vD,vS5,vtheta3,F3]=crank_slider_velocity(theta1(i),vtheta1(i),LOD,C1,C2,C3,C4,LOA,LDB,LBC); theta1_=theta1(i)-vtheta1*dt; [vA_,vB_,vC_,vS3_,vtheta3_]=crank_slider_velocity(theta1,vtheta1,LOD,C1,C2,C3,C4,LOA,LDB,LBC); aA=(vA-vA_)/dt; aB=(vB-vB_)/dt; aC=(vC-vC_)/dt; vS3=(S3-S3_)/dt; aS3=(vS3-vS3_)/dt; atheta3=(vtheta3-vtheta3_)/dt; end 两个FUNCTION文件我是这样编的: function[vA,vB,vC,vS3,vtheta3,F3]=crank_slider_velocity(theta1,vtheta1) LOD=150;C1=120;C2=50;C3=50;C4=120;LOA=75;LDB=100;LBC=100;LDY=93.3; [B,C,S3,theta3,F3]=crank_slider_position(theta1,LOD,C1,C2,LDY,C3,C4,LOA,LDB,LBC); vA=LOA*vtheta1*[-LOA*sin(theta1),LOA*cos(theta1)]'; vtheta3=(theta3-theta_)/dt; vB=LBC*vtheta3*[LBC*sin(theta2),LBC*cos(theta2)]'; vC=[0,(-2*(C(1)-B(1))*(C(1)*B(1)))/sqrt(LBC^2-(C(1)-B(1))+B(2))]'; S3_=S3-S3*dt; vS3=(S3-S3_)/dt; end function[A,B,C,S3,theta3,F3]=crank_slider_position(theta1,LOD,C1,C2,LDY,C3,C4,LOA,LDB,LBC); LOD=150;C1=120;C2=50;C3=50;C4=120;G3=160;G5=320;LOA=75;LDB=100;LBC=100;LDY=93.3;JS3=0.14; A=LOA*[cos(theta1),sin(theta1)]'; theta3=atan2(A(2)-0,A(1)); B=[-(LBC*cos(theta3)+LOD),LBC*sin(theta3)]'; C=[-(LOD+LDY),sqrt(LBC^2-(-(LOD+LDY)-B(1))^2)+B(2)]'; F3=atan2(C2,sqrt(C(1)^2-C(2)^2)); S3=C1*[cos(theta3+F3),sin(theta3+F3)]'; end 只有在这个水平了,求各位指教!运行后提示: ??? Error using ==> crank_slider_velocity Too many input arguments.
追问:
还是一样。我删掉了velocity那段,后面改为:theta1_=theta1(i)-vtheta1*dt;
[A_,B_,C_,S3_,theta3_,F3_]=crank_slider_position(theta1_,LOD,C1,C2,LDY,C3,C4,LOA,LDB,LBC);
vA=(A-A_)/dt;
vB=(B-B_)/dt;
vC=(C-C_)/dt;
vtheta3=(theta3-theta3_)/dt;
aA=(vA-vA_)/dt;
aB=(vB-vB_)/dt;
aC=(vC-vC_)/dt;
vS3=(S3-S3_)/dt;
aS3=(vS3-vS3_)/dt;
atheta3=(vtheta3-vtheta3_)/dt;
end
提示Matrix dimensions must agree
Matrix dimensions must agree. 是说矩阵维度不匹配。
请问这个怎么修改呀,谢谢!
答案:这个错误很基础的,错误在这里!
[vA,vB,vC,vD,vS5,vtheta3,F3]=crank_slider_velocity(theta1(i),vtheta1(i),LOD,C1,C2,C3,C4,LOA,LDB,LBC);
你传入了10个参数,而你定义的函数只需要传入两个
[function[vA,vB,vC,vS3,vtheta3,F3]=crank_slider_velocity(theta1,vtheta1)
把错误的地方改为
vA,vB,vC,vD,vS5,vtheta3,F3]=crank_slider_velocity(theta1(i),vtheta1);

matlab是基于矩阵(表)来作为变量编程的,但本质上也是程序符合一般程序的特点

上一个:关于MATLAB程序设计 发我邮箱605570724@qq.com 要原创
下一个:MATLAB运行程序后,出现了一下busy,但后面没有结果出来,也没有提示,求高手指点,看看程序有没有问题

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,