研发埠

标题: 请大家帮我看看这个MATLAB程序究竟哪错了 [打印本页]

作者: 王学德    时间: 2014-5-15 13:55
标题: 请大家帮我看看这个MATLAB程序究竟哪错了
我的循环到第二次就不能运行了,请问是哪里出了问题呢?
for a=1:3
  d4(a)=200*(rand(1)*0.1+0.1);
  l4(a)=200*(rand(1)*0.3+0.1);
  l2(a)=200-d4(a)-l4(a);
  n=1000;
  for i=1:1000
  theta1(i)=60*rand(1)-30;
  theta2(i)=90*rand(1)-60;
  theta4(i)=0;
  theta3(i)=60*rand(1);
  x(i)=l4(a)*cosd(theta1(i))*sind(theta2(i)+theta3(i))*cosd(theta4(i))-l4(a)*sind(theta1(i))*sind(theta4(i))+cosd(theta1(i))*cosd(theta2(i)+theta3(i))*d4(a)+l2(a)*cosd(theta1(i)+cosd(theta2(i)));
   
  y(i)=l4(a)*sind(theta1(i))*sind(theta2(i)+theta3(i))*cosd(theta4(i))+l4*cosd(theta1(i))*sind(theta4(i))+d4(a)*sind(theta1(i))*cosd(theta2(i)+theta3(i))+l2(a)*sind(theta1(i)+cosd(theta2(i)));
   
  z(i)=-l4(a)*cosd(theta2(i)+theta3(i))*cosd(theta4(i))+sind(theta2(i)+theta3(i))*d4(a)+l2(a)*sind(theta2(i));
  end

tx1=round(max(x)+0.5);
tx2=round(min(x)+0.5)-1;
ty1=round(max(y)+0.5);
ty2=round(min(y)+0.5)-1;
tz1=round(max(z)+0.5);
tz2=round(min(z)+0.5)-1;

temp=zeros(tx1-tx2,ty1-ty2,tz1-tz2);

for i=1:1000
  m=round(x(i)-0.5)-round(tx2);
  n=round(y(i)-0.5)-round(ty2);
  p=round(z(i)-0.5)-round(tz2);
  if((m~=0)&&(n~=0)&&(p~=0))
  temp(round(x(i)-0.5)-round(tx2),round(y(i)-0.5)-round(ty2),round(z(i)-0.5)-round(tz2))=1;
  end
end
count(a)=0;
for i=1:tx1-tx2
  for j=1:ty1-ty2
  for k=1:tz1-tz2
  if(temp(i,j,k)==1)
  count(a)=count(a)+1;
  end
  end
  end
end
plot3(d4(a),l4(a),count(a),'r*')
end

20140515135502947.jpg
登录/注册后可看大图

作者: 曹宇飞    时间: 2014-5-16 10:37
y(i)=l4(a)*sind(theta1(i))*sind(theta2(i)+theta3(i))*cosd(theta4(i))+l4(a)*cosd(theta1(i))*sind(theta4(i))+d4(a)*sind(theta1(i))*cosd(theta2(i)+theta3(i))+l2(a)*sind(theta1(i)+cosd(theta2(i)));这一句中缺(a)。




欢迎光临 研发埠 (http://bbs.yanfabu.com/) Powered by Discuz! X3.2