我有一些坐标为lat,lon和值Z的数据点(数百万个数据点)。每个坐标点表示大小为0.0005的网格的中心。我想用代表Z值的颜色来绘制它们。但是,我的数据不是网格数据,它们是分散的数据点。我知道另一个功能“geoshow”也可以制作类似的Map,但对于网格数据。用matlab将散点数据转换成网格数据时,内存不足.所以我用pcolor实现了这一点。代码如下:
clc
clear all
data = load('data.txt');% This data.txt file is large, about 100M and each line with lat, lon and value Z
X = data(:,1); % Lat
Y = data(:,2); %Lon
Z = data(:,3); % Value Z
grid_dx=0.0005;
grid_dy=0.0005;
xl=X-grid_dx/2;
xr=X+grid_dx/2;
yu=Y+grid_dy/2;
yd=Y-grid_dy/2;
for i1=1:length(x)
xx=[xl(i1),xr(i1);xl(i1),xr(i1)];
yy=[yd(i1),yd(i1);yu(i1),yu(i1)];
zz=repmat(z(i1),2,2);
pcolor(xx,yy,zz)
colormap('jet')
end
对于小数据集,它工作得很好。然而,对于较大的数据集,它将花费太多的时间。是否可以在不网格化的情况下更快地绘制散点数据?任何函数pcolor,geoshow或其他东西都可以。感谢您的任何帮助!
1条答案
按热度按时间ikfrs5lh1#
您可以使用
scatter
函数以基于z的颜色绘制(x,y)
点,而无需执行插值。这段代码产生