Matlab 3D极坐标图

时间:2014-08-08 11:55:18

标签: matlab plot polar-coordinates surface

我正在努力完成绘制表面极坐标图背后的概念。

我试图在半球上以不同角度的组合绘制传感器测量的值。

我有一个包含以下信息的数组:

A(:,1)= 0到360º的方位角值

A(:,2)=从0到90º的天顶值

A(:,3)=在A(:,1)和A(:,2)的角度组合下测量的值

例如,这是一个片段:

0   15  0.489502132167206
0   30  0.452957556748497
0   45  0.468147850273115
0   60  0.471115818950192
0   65  0.352532182508945
30  15  0.424997863795610
30  30  0.477814980942155
30  45  0.383999653859467
30  60  0.509625464595446
30  75  0.440940431784788
60  15  0.445028058361392
60  30  0.522388502880219
60  45  0.428092266657885
60  60  0.429315072676194
60  75  0.358172892912138
90  15  0.493704001125912
90  30  0.508762762699997
90  45  0.450598496609200
90  58  0.468523071441297
120 15  0.501619699042408
120 30  0.561755273071577
120 45  0.489660355057938
120 60  0.475478615354648
120 75  0.482572226928475
150 15  0.423716506205776
150 30  0.426735372570756
150 45  0.448548968227972
150 60  0.478055144126694
150 75  0.437389584937356

为了澄清,这里有一段代码显示了极坐标图上的测量点。

th = A(:,1)*pi/180

polar(th,A(:,2))
view([180 90])

这给了我以下情节:

example

我现在想要绘制相同的东西,但不是使用点,而是使用存储在A(:,3)中的这些点的值。然后,我想插入数据以获得彩色表面。

经过一番研究,我发现我需要在网格上插值我的值,然后转换为笛卡尔坐标。从那里我不知道如何继续。有人能指出我正确的方向吗?

我无法获得插值的概念,但这是我尝试过的:

x1 = linspace(0,2*pi,100)

x2 = linspace(0,90,100)

[XX,YY] = meshgrid(x1,x2) 

[x,y] = pol2cart(th,A(:,2)) 

gr=griddata(x,y,A(:,3),XX,YY,'linear') 

1 个答案:

答案 0 :(得分:0)

使用这段代码,您的示例数据点将转换为笛卡尔坐标,然后绘制为“线”。一条线的两个尖端是一个数据点和原点。

az = bsxfun(@times, A(:,1), pi/180);
el = bsxfun(@times, A(:,2), pi/180);
r = A(:,3);

[x,y,z] = sph2cart(az,el,r);
cx = 0; % center of the sphere
cy = 0;
cz = 0;
X = [repmat(cx,1,length(x));x'];
Y = [repmat(cy,1,length(y));y'];
Z = [repmat(cz,1,length(z));z'];

还在考虑如何插入数据以便绘制球体。请参阅我对您问题的评论。