我具有取决于θ和phi的公式(球面坐标0 <=θ<= 2 * pi且0 <= phi <= pi)。通过插入每个engle,我获得了一个数量。现在我有一组不同角度的数据,我需要绘制表面。我的数据是180 * 360矩阵,所以我不确定我是否可以使用SURF或MESH或PLOT3。该图应该是包含所有数据的曲面,轴应该是数量,而不是数量与角度的关系。我该如何绘制这样的表面?
答案 0 :(得分:0)
我认为没有理由不使用mesh
或surf
来绘制此类数据。我倾向于使用的另一种选择是密度图。您基本上将因变量(数量)显示为图像,并沿轴包含自变量(角度),就像使用上述3D绘图功能一样。这可以使用imagesc
完成。
通常,您希望轴是因变量。你能详细说明这一点吗?
答案 1 :(得分:0)
如果我理解正确,你已计算出一个函数f(theta,phi)
,现在你想绘制包含所有点的表面,其中极坐标为(r,theta,phi)
r=f(theta,phi)
。
如果这是你想要做的,那么这个图的2D版本将以名称polar
包含在MATLAB中。不幸的是,正如您所指出的,MatlabCentral上的polar3
并不是您正在寻找的概括。
我已经能够使用常量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)]
组合成另一个三角形。 ..?