请教高手,怎么用matlab画以下函数的三维图(以x,y,z为坐标)?

来源:百度知道 编辑:UC知道 时间:2024/05/21 09:31:36
x=cosθ1*cosθ2*cosθ3-cosθ1*sinθ2*sinθ3+cosθ1*cosθ2+cosθ1,
y=sinθ1*cosθ2*cosθ3-sinθ1*sinθ2*sinθ3+sinθ1*cosθ2+sinθ1,
z=sinθ2*cosθ3+cosθ2*sinθ3+sinθ2;
其中θ1,θ2,θ3是自由变量,并且-30°<=θ1<=30°,-30°<=θ2<=30°,-30°<=θ3<=30°。
用matlab画该函数的三维图,怎么写语句啊?谢谢 !
就是由自由变量θ1,θ2,θ3决定的点(x,y,z)的空间集合。

matlab好像只能画曲线和曲面,不能画三维实体,你试试这个样子的图你能不能接收吧。
for i=linspace(-pi/6,pi/6,20)
for j=linspace(-pi/6,pi/6,10)
for k=linspace(-pi/6,pi/6,10)
x=cos(i)*cos(j)*cos(k)-cos(i)*sin(j)*sin(k)+cos(i)*cos(j)+cos(i);
y=sin(i)*cos(j)*cos(k)-sin(i)*sin(j)*sin(k)+sin(i)*cos(j)+sin(i);
z=sin(j)*cos(k)+cos(j)*sin(k)+sin(j);
plot3(x,y,z,'o');hold on;
end
end
end

N=30;
for k=linspace(-pi/6,pi/6,N)
[i,j]=meshgrid(linspace(-pi/6,pi/6,N),linspace(-pi/6,pi/6,N));
x=cos(i).*cos(j).*cos(k)-cos(i).*sin(j).*sin(k)+cos(i).*cos(j)+cos(i);
y=sin(i).*cos(j).*cos(k)-sin(i).*sin(j).*sin(k)+sin(i).*cos(j)+sin(i);
z=sin(j).*cos(k)+cos(j).*sin(k)+sin(j);
plot3(x,y,z,'.')
end

修改了一下楼上的。
如果电脑够快,把N=30个值改称60或以上,效果就是立体曲面图。
PS:
MATLAB循环很慢,尽量减少循环,实在的情况下实在没办法,可以用C等语言写循环,与之混合编程。

x=cos(t1)*cos(t2)*cos(t3)-cos(t1)*sin(t2)*sin(t3)+cos(t1)*cos(t2)+cos(t1);
y=