从分散的数据网格化,索引超过维度

时间:2012-02-13 05:22:17

标签: matlab

我有一个月数据的lat,lon,数据,我正在努力将它们放在一个规则的均匀网格(2度)而不进行插值(bining)。我收到一个错误:索引超出维度“

我有lat,lon,var在列矩阵中,这些是从1个月(数千行)的多个文件中获得的。我在X(zind(k,1),zind(k,2))=mean(zind(ind));得到错误,其中索引超出维度。谢谢你的帮助,

其中x = lat,y = lon,z = var

   % make grid for scattered lat, lon, var
    data=load('mydata.txt')
    x=data(:,1);
    y=data(:,2);
    z=data(:,3);
    %make a grid with 2 degree
    cellsize=2;
    minx=-90;
    maxx=90;
    miny=-180;
    maxy=180;
    xi=(minx:cellsize:maxx);
    yi=(miny:cellsize:maxy);
    [X,Y]=meshgrid(xi,yi);
    [m,n]=size(X);
    %populate grid and make average
    xind=floor((x-minx)./cellsize)+1;
    yind=floor((y-miny)./cellsize)+1;
    zind=unique([yind,xind],'rows');
    Z=ones(m,n).*NaN;

    for k=1:length(zind)
    ind=find(xind==zind(k,2)&...
     yind==zind(k,1)==1);
  X(zind(k,1),zind(k,2))=mean(zind(ind));
 end
    %make a plot
    figure;
    axis([-180 180 90 -90]);
    imagesc(xi,yi,Z);
    **********************

1 个答案:

答案 0 :(得分:0)

首先:

ind=find(xind==zind(k,2)&...
     yind==zind(k,1)==1);

我认为==1不应该存在。

其次,我认为您的错误来自mean(zind(ind)):您不希望zind的平均值,即唯一(y,x)索引的索引。你想要z的平均值:

X(zind(k,1),zind(k,2))=mean(z(ind));  % changed last zind -> z