Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不是球形图?如何在Matlab中绘制三维极坐标图?_Matlab_Math_Polar Coordinates - Fatal编程技术网

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

为什么不是球形图?如何在Matlab中绘制三维极坐标图?,matlab,math,polar-coordinates,Matlab,Math,Polar Coordinates,我玩过这个,但试图找到一个默认函数来实现这个。如何进行三维极坐标绘图 我试图帮助这家伙可视化不同的积分。您的代码中有几个问题: 您已经使用sin(θ)*cos(phi)和sin(θ)*sin(phi)位将球坐标转换为笛卡尔坐标。你为什么打电话给pol2cart(而且,我们不是在极坐标系下工作!) 正如纳坦所指出的,在你的图中没有三维空间(即z)。对于单位半径,r可以在球面域中省略,球面域完全由theta和phi定义,但在笛卡尔域中,有三个x,y和z。z的公式是z=cos(θ)(单位半径) 您没

我玩过这个,但试图找到一个默认函数来实现这个。如何进行三维极坐标绘图


我试图帮助这家伙可视化不同的积分。

您的代码中有几个问题:

  • 您已经使用
    sin(θ)*cos(phi)
    sin(θ)*sin(phi)
    位将球坐标转换为笛卡尔坐标。你为什么打电话给pol2cart(而且,我们不是在极坐标系下工作!)
  • 正如纳坦所指出的,在你的图中没有三维空间(即
    z
    )。对于单位半径,
    r
    可以在球面域中省略,球面域完全由
    theta
    phi
    定义,但在笛卡尔域中,有三个
    x
    y
    z
    z
    的公式是
    z=cos(θ)
    (单位半径)
  • 您没有阅读的文档,其中说明:

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

    换句话说,您的
    surf(x,y)
    行仅绘制矩阵
    x
    ,并使用
    y
    作为颜色贴图对其进行着色

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

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

@natan我可能弄乱了术语:我想让它看起来像2d中的圆圈和3D中的球体。您添加的当前代码只有两个坐标
r
t
,所以我不明白第三维应该从何而来。。。常规极坐标图可以。@natan半径假定为1。r代表$\rho$,t$代表$\theta$。
[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)