求高手指教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,但后面没有结果出来,也没有提示,求高手指点,看看程序有没有问题