我正在使用Matlab处理地震数据,其中每一个都假设对应于特定的地理点(已知纬度,长度)。其中一个目标是将地球表面中的点分组,这些点由特定半径的区域(例如r = 10度)包围。箱子是否重叠并不重要。
我使用了histr()
Matlab内在函数,但是它输出了结果箱中(lat,long)的中心坐标和bin中包含的数据点的数量。但是,我还想标记数据点,并能够在后续处理中使用这些标记的数据点。
我用过的:
lt1=load('midlats.dat');
lg1=load('midlons.dat');
len_lt=length(lt1);
len_lg=length(lg1);
nb=1;
[clats,clons,num,wnum] = histr(lt1,lg1,nb);
其中nb定义了每个角度度数所需的箱数。
这是否接近我的目标或我完全错过了图片??? 有人遇到过类似的东西吗? 任何帮助/评论将不胜感激。
答案 0 :(得分:0)
这是一个想法 - 您需要定义bin边的向量(两者相同或不同),请参阅histc
的帮助:
[nlt, i_lt] = histc(lt1,b_vec1);
[nlg, i_lg] = histc(lg1,b_vec2);
现在,作弊 - 使用sub2ind
转换i_lt
和i_lg
,将您的数据所在的纬度和经度区间的索引转换为单个索引。
sz = [length(i_lt),length(i_lg)];
ind = sub2ind(sz,i_lt,i_lg);
具有相同ind
的任何点都在相同的lat + lon箱中。然后,您可以通过使用ind
建立索引来选择它们,例如lg1(ind==1)
等等。