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

标签 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 .

最佳答案

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

  • 您已使用 sin(theta)*cos(phi)sin(theta)*sin(phi) 位将球坐标转换为笛卡尔坐标。为什么要为此调用 pol2cart(而且,我们不在极坐标中工作!)?
  • 正如 natan 指出的,您的绘图中没有第三维(即 z)。对于单位半径,在球面域中可以省略r,它完全由thetaphi定义,但在笛卡尔域中,您拥有全部三个 xyzz 的公式为 z = cos(theta)(单位半径)。
  • 您没有阅读 surf 的文档,其中表示:

    surf(Z,C) plots the height of Z, a single-valued function defined over a geometrically rectangular grid, and uses matrix C, assumed to be the same size as Z, to color the surface.

    换句话说,您的 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)

enter image description here

关于matlab - 为什么不是球形图?如何在 Matlab 中绘制 3D 极坐标图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14227914/

相关文章:

matlab - 使用多个绘图创建动画 - Octave/Matlab

matlab - 在 MATLAB 中绘制形状上下文对数极坐标箱

python - Matplotlib - 如何在极坐标中绘制流线?

matlab - 如何积累数据集?

matlab - 如何在Matlab中加速/避免大型矩阵的乘法?

php - 正弦回归 PHP

c# - 如何在C#中进行加减法运算?

opencv - 给定图像帧中对象的坐标,查找图像中对象的深度

Matlab >>连接矩阵的维数不一致

python - 如何为极轴扇区之间的点设置动画?