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

2024-11-18 12:26:18
推荐回答(3个)
回答1:

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

回答2:

x=cos(t1)*cos(t2)*cos(t3)-cos(t1)*sin(t2)*sin(t3)+cos(t1)*cos(t2)+cos(t1);
y=sin(t1)*cos(t2)*cos(t3)-sin(t1)*sin(t2)*sin(t3)+sin(t1)*cos(t2)+sin(t1);
z=sin(t2)*cos(t3)+cos(t2)*sin(t3)+sin(t2);
三个自由变量,不能确定x,y,z

回答3:

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等语言写循环,与之混合编程。