2
[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);

在此处输入图像描述

我玩过这个插件,但试图为此找到一个默认功能。如何制作 3D 极坐标图?

我正试图帮助这个人在这里可视化不同的积分。

4

1 回答 1

5

您的代码中有几个问题:

  • 您已经使用sin(theta)*cos(phi)sin(theta)*sin(phi)位将球坐标转换为笛卡尔坐标。你为什么要调用pol2cart这个(此外,我们不是在极坐标中工作!)?
  • 正如 natan 指出的那样,z您的情节中没有第三维(即)。对于统一半径,r在球面域中可以省略,它完全由theta和定义phi,但在笛卡尔域中,您拥有所有三个x和。的公式是(对于单位半径)。yzzz = cos(theta)
  • 您没有阅读 的文档surf,其中说:

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

    换句话说,您的surf(x,y)线仅绘制矩阵x并将其y用作颜色图。

这是上面的代码,错误已修复并正确绘制:

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

在此处输入图像描述

于 2013-01-09T05:02:23.703 回答