我有一个取决于 theta 和 phi 的公式(球坐标 0<=theta<=2*pi 和 0<=phi<=pi)。通过插入每个 engle,我获得了一个数量。现在我有一组不同角度的数据,我需要绘制表面。我的数据是 180*360 矩阵,所以我不确定是否可以使用 SURF 或 MESH 或 PLOT3。该图应该是一个包含所有数据的表面,并且轴应该是数量,而不是数量与角度。如何绘制这样的曲面?
问问题
1429 次
2 回答
0
如果我理解正确,您已经计算了一个函数f(theta,phi)
,现在您想要绘制包含所有点的曲面,其中极坐标为(r,theta,phi)
where r=f(theta,phi)
。
如果这是您想要做的,则此类绘图的 2D 版本包含在 MATLAB 中,名称为polar
. 不幸的是,正如您所指出的,polar3
在MatlabCentral上并不是您正在寻找的概括。
我已经能够使用以下代码绘制一个球体,使用 constant r=1
。您可以尝试使用您的功能:
phi1=0:1/(3*pi):pi; %# this would be your 180 points
theta1=-pi:1/(3*pi):pi; % your 360 points
r=ones(numel(theta1),numel(phi1));
[phi,theta]=meshgrid(phi1,theta1);
x=r.*sin(theta).*cos(phi);
y=r.*sin(theta).*sin(phi);
z=r.*cos(theta);
tri=delaunay(x(:),y(:),z(:));
trisurf(tri,x,y,z);
从我的测试来看,它似乎delaunay
还包括很多穿过我的球体体积的三角形,所以这似乎不是最优的。因此,也许您可以查看fill3
并构建它自己绘制的三角形:作为第一个近似值,您可以将点[x(n,m) x(n+1,m) x(n,m+1)]
组合成一个三角形,然后组合[x(n+1,m) x(n+1,m+1) x(n+1,m+1)]
成另一个......?
于 2011-07-17T02:12:38.133 回答
0
我看不出为什么您不能使用mesh
或surf
绘制此类数据。我倾向于使用的另一个选项是密度图。您基本上将因变量(数量)显示为图像,并沿轴包含自变量(角度),就像使用上述 3D 绘图函数一样。这可以通过imagesc
.
通常,您希望您的轴成为因变量。您能否详细说明这一点?
于 2011-07-17T00:27:05.103 回答