- 积分
- 19203
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2015-6-5
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
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;
|
|