【问题标题】:Using pcolor in matlab loops在 matlab 循环中使用 pcolor
【发布时间】:2014-07-02 09:08:14
【问题描述】:

我有一些坐标 lat、lon 和值 Z 的数据点(数百万个数据点)。每个坐标点代表一个大小为 0.0005 的网格的中心。 我想用颜色代表Z值来绘制它们。但是,我的数据不是网格数据,它们是分散的数据点。我知道另一个函数“geoshow”也可以制作类似的地图,但用于网格数据。使用 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 或其他东西都可以。 感谢您的帮助!

【问题讨论】:

    标签: matlab maptools


    【解决方案1】:

    您可以使用 scatter 函数以基于 z 的颜色绘制 (x,y) 点,而无需执行插值。

    lat = sort(10*rand(100,1));  % sorting is optional, just to give a 
    lon = sort(10*rand(100,1));  % gradient in the coloring
    z = sort(rand(100,1));
    
    scatter(lat, lon, [] , z, 'fill');
    

    这段代码产生

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 2014-05-28
    • 2015-04-20
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 2020-10-19
    相关资源
    最近更新 更多