用柱坐标在Matlab中绘制半球体
考虑下面的代码,它试图使用柱坐标绘制z=sqrt(4-x^2-y^2)。当然,球坐标更合适,但我的问题涉及到下面的代码发生了什么用柱坐标在Matlab中绘制半球体,matlab,Matlab,考虑下面的代码,它试图使用柱坐标绘制z=sqrt(4-x^2-y^2)。当然,球坐标更合适,但我的问题涉及到下面的代码发生了什么 r=linspace(0,2,20); theta=linspace(0,2*pi,40); [r,theta]=meshgrid(r,theta); x=r.*cos(theta); y=r.*sin(theta); z=sqrt(4-x.^2-y.^2); mesh(x,y,z) >>弗尔 MATLAB版本:8.1.0.604(R2013a) 操作系统:Ma
r=linspace(0,2,20);
theta=linspace(0,2*pi,40);
[r,theta]=meshgrid(r,theta);
x=r.*cos(theta);
y=r.*sin(theta);
z=sqrt(4-x.^2-y.^2);
mesh(x,y,z)
>>弗尔
MATLAB版本:8.1.0.604(R2013a)
操作系统:Mac OS X版本:10.9.5内部版本:13F34
Java版本:Java 1.6.0_65-b14-462-11M4609,采用Apple Inc.Java HotSpot(TM)64位服务器虚拟机混合模式
由于以下错误,上述代码将不会打印
Error using mesh (line 76)
X, Y, Z, and C cannot be complex
我觉得奇怪的是,矩阵z的所有值都用复数形式表示。毕竟,我正在绘制x^2+y^2区域上的曲面,是的,我认为是舍入误差。如果你做了
z=real(sqrt(4-x.^2-y.^2))代码>然后它工作正常。不过,您的z=sqrt(4-r.^2)
想法很巧妙!同意,这是舍入错误。如果您按照David的建议添加对real
的调用,则应该设置
z =
Columns 1 through 3
2.0000 + 0.0000i 1.9972 + 0.0000i 1.9889 + 0.0000i
2.0000 + 0.0000i 1.9972 + 0.0000i 1.9889 + 0.0000i
2.0000 + 0.0000i 1.9972 + 0.0000i 1.9889 + 0.0000i
2.0000 + 0.0000i 1.9972 + 0.0000i 1.9889 + 0.0000i
format long
0.000000021073424 + 0.000000000000000i
0.000000000000000 + 0.000000021073424i
0.000000021073424 + 0.000000000000000i
0.000000000000000 + 0.000000014901161i
0.000000000000000 + 0.000000010536712i
0.000000007450581 + 0.000000000000000i
0.000000000000000 + 0.000000013938760i
0.000000000000000 + 0.000000000000000i
>> z(39,20)
ans =
0.000000000000000e+00 + 1.393875996311732e-08i
clc
close all
r=linspace(0,2,20);
theta=linspace(0,2*pi,40);
[r,theta]=meshgrid(r,theta);
x=r.*cos(theta);
y=r.*sin(theta);
z=sqrt(4-r.^2);
mesh(x,y,z)
clc
close all
r=linspace(0,2,20);
theta=linspace(0,2*pi,40);
[r,theta]=meshgrid(r,theta);
x=r.*cos(theta);
y=r.*sin(theta);
z=sqrt(4-(x.^2+y.^2));
mesh(x,y,z)