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

hhh*_*hhh 2 math matlab 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);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我玩这个插件,但试图找到一个默认的功能.我该怎么做3D极坐标图?

我正在努力帮助这个人在这里诋毁不同的积分.

abc*_*bcd 5

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

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

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

    换句话说,您的surf(x,y)线条仅绘制矩阵xy用作色彩图的颜色.

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

[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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述