MATLAB中几种基于矩阵的三维曲面绘制

MATLAB中几种基于矩阵的三维曲面绘制,matlab,plot,Matlab,Plot,我想在我的3D空间中显示几个球体,每个球体都有不同的中心位置和半径。因此,我使用Matlab遵循教程,得到了以下结果。唯一的问题是,我可能有数百个球体要绘制,所以不可能写下数百行。有没有办法将surf()函数与矩阵输入一起使用?也许用x,y和z矩阵冲浪(x,y,z)?谢谢 hold on; [x,y,z] = sphere; r = 50; s1 = surf(x*r,y*r,z*r,'FaceAlpha',0.1); s2 = surf((x+3)*r,(y-2)*r,z*r,'FaceAlp

我想在我的3D空间中显示几个球体,每个球体都有不同的中心位置和半径。因此,我使用Matlab遵循教程,得到了以下结果。唯一的问题是,我可能有数百个球体要绘制,所以不可能写下数百行。有没有办法将surf()函数与矩阵输入一起使用?也许用x,y和z矩阵冲浪(x,y,z)?谢谢

hold on;
[x,y,z] = sphere;
r = 50;
s1 = surf(x*r,y*r,z*r,'FaceAlpha',0.1);
s2 = surf((x+3)*r,(y-2)*r,z*r,'FaceAlpha',0.1); % centered at (3,-2,0) 
s3 = surf(x*r,(y+1)*r,(z-3)*r,'FaceAlpha',0.1); % centered at (0,1,-3)

s1.EdgeColor = 'none';
s2.EdgeColor = 'none';
s3.EdgeColor = 'none';

用一般形式写。。。。你就快到了:

s = surf((x-cx)*r,(y-cy)*r,(z-cz)*r,'FaceAlpha',0.1);

现在只要用循环改变cx,cy,cz,就可以了,
y和
z已经是(2D)矩阵了。为什么不使用for循环?实际上你是对的!我不知道为什么我没有想到一个for循环。。。但是使用for循环绘制数百个球体不会花费太长时间吗?无论如何我会试试的谢谢!是的,谢谢你,我想循环会很好!不知道我为什么在这里结巴:)