关于matlab的循环问题
syms u v
u=64;v0.3273;g=pi/9;m=pi/9;a=100;p=2.125;
x=u*cos(u*cos(g)^2*(a + p*cot(m) - 1.0*u*cos(g)*cos(v)) + cos(g)*(p*v + u*sin(g))*(p*sin(v) - 1.0*u*cos(v)*sin(g)) - 1.0*a*cos(g)*cot(m)*(p*cos(v) + u*sin(g)*sin(v)))*cos(g);
y=u*sin(u*cos(g)^2*(a + p*cot(m) - 1.0*u*cos(g)*cos(v)) + cos(g)*(p*v + u*sin(g))*(p*sin(v) - 1.0*u*cos(v)*sin(g)) - 1.0*a*cos(g)*cot(m)*(p*cos(v) + u*sin(g)*sin(v)))*cos(g);
z=u*sin(g) + p*(u*cos(g)^2*(a + p*cot(m) - 1.0*u*cos(g)*cos(v)) + cos(g)*(p*v + u*sin(g))*(p*sin(v) - 1.0*u*cos(v)*sin(g)) - 1.0*a*cos(g)*cot(m)*(p*cos(v) + u*sin(g)*sin(v)));
X=a-x;
Y=-y.*cos(m)-z.*sin(m); %坐标变换*
Z=-y.*sin(m)-z.*cos(m);
R=sqrt(X^2+Y^2) %截型
Z1=Z
O=[R,Z1] 展开
你可以这样改一下,主要的问题是要正确使用数值运算和点运算符。可以不用循环语句来处理。
u=100*rand(1,10); %这里为了说明问题,随意取的向量组
v=rand(1,10); %这里为了说明问题,随意取的向量组
g=pi/9;m=pi/9;a=100;p=2.125;
x=u.*cos(u*cos(g).^2.*(a + p*cot(m) - 1.0*u*cos(g).*cos(v)) + cos(g).*(p*v + u*sin(g)).*(p*sin(v) - 1.0*u.*cos(v)*sin(g)) - 1.0*a*cos(g)*cot(m).*(p*cos(v) + u*sin(g).*sin(v)))*cos(g);
y=u.*sin(u*cos(g).^2.*(a + p*cot(m) - 1.0*u*cos(g).*cos(v)) + cos(g).*(p*v + u*sin(g)).*(p*sin(v) - 1.0*u.*cos(v)*sin(g)) - 1.0*a*cos(g)*cot(m).*(p*cos(v) + u*sin(g).*sin(v)))*cos(g);
z=u*sin(g) + p*(u*cos(g).^2.*(a + p*cot(m) - 1.0*u.*cos(g).*cos(v)) + cos(g).*(p*v + u*sin(g)).*(p*sin(v) - 1.0*u.*cos(v)*sin(g)) - 1.0*a*cos(g)*cot(m).*(p*cos(v) + u*sin(g).*sin(v)));
X=a-x;
Y=-y.*cos(m)-z.*sin(m); %坐标变换*
Z=-y.*sin(m)-z.*cos(m);
R=sqrt(X.^2+Y.^2); %截型
Z1=Z;
O=[R',Z1']
运行效果