我有一个月数据的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);
**********************
答案 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