【问题标题】:How to bin geographical data and output the data points included in each bin in matlabmatlab中如何对地理数据进行bin并输出每个bin中包含的数据点
【发布时间】:2018-12-25 23:24:09
【问题描述】:

我正在使用 Matlab 处理地震数据,每一个都假设对应于一个特定的地理点(已知纬度、经度)。目标之一是对地球表面中的点进行分组,这些点被特定半径的 bin 包围(例如 r=10 度)。垃圾箱是否重叠并不重要。 我使用了histr() Matlab 内在函数,但这会输出结果箱的(纬度,经度)中心坐标和箱中包含的数据点数。但是,我还想标记数据点,并能够在后续处理中使用这些标记的数据点。 我用过的:

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 定义了每个角度需要多少个 bin。

这是否接近我的目标,或者我完全错过了图片??? 有人遇到过类似的事情吗? 任何帮助/cmets 将不胜感激。

【问题讨论】:

  • 您必须分别为 lat 和 lon 执行此操作,但 histc 还可以返回您的数据属于哪个 bin 的索引,因此您可以跟踪哪个 bin 中的值。

标签: matlab bins


【解决方案1】:

这是一个想法 - 您需要定义一个 bin 边缘向量(两者相同或不同),请参阅histc 的帮助:

[nlt, i_lt] = histc(lt1,b_vec1);
[nlg, i_lg] = histc(lg1,b_vec2);

现在,作弊 - 使用 sub2indi_lti_lg(您的数据所在的纬度和经度 bin 的索引)转换为单个索引。

sz = [length(i_lt),length(i_lg)];
ind = sub2ind(sz,i_lt,i_lg);

具有相同ind 的任何点都在相同的 lat + lon bin 中。然后,您可以通过使用ind 进行索引来选择它们,例如lg1(ind==1) 等等。

【讨论】:

  • 我一直在使用histc() 处理它,但是,这不会将纬度和经度视为对,而是将其视为单独的值。因此,在此上下文中使用histc() 将帮助我们分别跟踪lt1、lg1。感谢您的反馈,它给了我一些想法,但我还没有走远..
  • 这就是为什么 sub2ind 部分,将它们配对。
猜你喜欢
  • 1970-01-01
  • 2016-07-07
  • 2021-08-14
  • 1970-01-01
  • 2021-03-15
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多