为什么不是球形图?如何在Matlab中绘制3D极坐标图?

时间:2013-01-09 03:38:08

标签: matlab math polar-coordinates

[r,t] = meshgrid(linspace(0,2*pi,361),linspace(0,pi,361));
[x,y]=pol2cart(sin(t)*cos(r),sin(t)*sin(r));
%[x,y]=pol2cart(r,t);
surf(x,y);

enter image description here

我玩了这个addon,但试图找到一个默认函数。我该怎么做3D极坐标图?

我正在努力帮助这个人改变不同的积分here

1 个答案:

答案 0 :(得分:5)

您的代码中存在几个问题:

  • 您已经使用sin(theta)*cos(phi)sin(theta)*sin(phi)位将球面坐标转换为笛卡尔坐标。你为什么要打电话给pol2cart(此外,我们还没有在极坐标中工作!)?
  • 正如纳坦指出的那样,你的情节中没有第三个维度(即z)。对于统一半径,r可以在球形域中省略,它由thetaphi完全定义,但在笛卡尔域中,您有三个xyzz的公式为z = cos(theta)(单位半径)。
  • 您没有阅读surf的文档,其中包含:

      

    surf(Z,C)绘制Z的高度,这是在几何矩形网格上定义的单值函数,并使用矩阵C,假设其大小与{{1}相同},为表面着色。

    换句话说,您的Z行只会绘制矩阵surf(x,y),并使用x作为色彩图对其进行着色。

以上是错误修正并正确绘制的代码:

y

enter image description here