Matlab中球面图的直方图

时间:2014-11-10 10:34:56

标签: matlab

我有半径为1的方位角和仰角数据,例如point = [azimuth, elevation, radius]。我想将球体表面划分为64个区域并获得点的直方图。例如,在下图中,第一个bin中有12个点(0 deg <= azimuth < 45 deg0 deg <= elevation < 45 deg

enter image description here

我正在考虑使用Switch / Case对点进行分组,但这肯定是非常低效的。有没有更好的方法?

编辑:我想找到一种方法来标记区域(任何方式都可以)并获得直方图,例如myHist = [... 1 1 ... 10 3 ... ] enter image description here

1 个答案:

答案 0 :(得分:3)

我不完全确定,用你的数据测试一下,看看它是怎么回事,

r = ones(1,100);
a = 2*pi*rand(1,100);
e = 2*pi*rand(1,100);
[X,Y,Z] = sphere(8) ;
[x y z] = sph2cart(a,e,r);
surf(X,Y,Z);hold on;
plot3(x,y,z,'ko','MarkerFaceColor','k');
axis([-1 1 -1 1 -1 1]);
fields = linspace(0,2*pi,9);
c = {fields,fields};
Hist = hist3(cat(2,a',e'),'Edges',c);
Hist(:,end) = []; Hist(end,:) = [];

enter image description here

 Hist =
 2     1     0     2     2     2     1     0
 0     0     2     1     2     2     3     2
 1     2     3     2     0     4     4     2
 1     0     0     1     1     2     1     4
 0     3     1     1     4     1     3     1
 3     3     1     3     4     1     1     0
 1     5     2     1     0     0     2     0
 0     0     3     1     1     0     2     2

 sum(sum(Hist)) = 100;

我认为如果你使用bar3

会更好

enter image description here