爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8609|回复: 4

[讨论] 如何快速从不规则离散点中按规则网格提取特征

[复制链接]

新浪微博达人勋

发表于 2018-7-29 16:44:32 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 yasqxt 于 2018-7-29 16:44 编辑

我有一些不规则的离散点组成的数据A,一共有300万行3列,第一第二列分别为经纬度,第三列为数值,分布很不规则,现在想要在这些不规则数据上覆盖一张大一点的规则网格B,把各个网格内的这些离散点的平均值或者最大值提取出来,通过for循环查找x,y是否在网格内,然后求其max,这样虽然可以完成,但是耗时太长,请教大神有没有更有效率的办法达到我的目的?

clear;clc;
profile clear;
profile on;
tic;
A = [200*rand(1000000,1),200*rand(1000000,1),10*rand(1000000,1)];
x = A(:,1);
y = A(:,1);
z = A(:,3);
[xgd ygd] = meshgrid(0:2.0:200,0:2.0:200);%创建网格2x2
net =[xgd(:),ygd(:)];
vmax =zeros(length(net),1);
for t =1:length(net)
     temp1 = A( A(:,1)>=net(t,1)-1.0 &  A(:,1)<=net(t,1)+1.0 ,:);
     temp2 = temp1(temp1(:,2) >=net(t,2)-1.0 & temp1(:,2) <=net(t,2)+1.0,:);  
     vmax(t,1) =max(temp2(:,3));
end
toc;
profile viewer;
QQ图片20180729164214.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-8-5 15:46:33 | 显示全部楼层
推进网格经纬度,去寻找在该网格内的点。每一个网格都要把所有的点跑一遍?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2020-4-9 17:04:23 | 显示全部楼层
请问最后有找到合适的方法吗
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-4-30 19:21:47 来自手机 | 显示全部楼层
czxjly0827 发表于 2020-4-9 17:04
请问最后有找到合适的方法吗

我最后用了一个变通的方法,单独生成两列Xgrid和Ygrid,这两个是网格中心的坐标,然后把x列和y列投到最近的网格中心,这样就相当于有许多的相同的Xgrid和Ygrid,最后使用max函数把他们聚合,提取最大值。
这样得到的还是3列的数据,但长度少了很多。
并不是网格,我后来用了python的pandas函数达成了目的,就是pd.unstack(),把三列数据的第一列当成index,第二列当成columns.第三列作为values。但这样有可能有的网格因为缺数据的原因还是不在这个dataframe里,就新生成一个规则的dataframe,行列索引设成网格点,里面值设成0,与前面的dataframe相加,就成了一个标准的新网格了。
希望能帮到你。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-5-1 09:35:40 | 显示全部楼层
yasqxt 发表于 2020-4-30 19:21
我最后用了一个变通的方法,单独生成两列Xgrid和Ygrid,这两个是网格中心的坐标,然后把x列和y列投到最近 ...

非常感谢!!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表