2012-02-13 52 views
0

我有經度,緯度,數據爲一個月的數據,我正在工作他們把一個規則的均勻網格(2度)沒有插值(bining)。我得到一個錯誤:索引超過尺寸「從分散數據網格,索引超過維數

我有lat,lon,var在列矩陣,這些是從1個月(成千上萬行)的多個文件中獲得的。在這裏我得到一個錯誤X(zind(k,1),zind(k,2))=mean(zind(ind));其中該指數超過尺寸感謝您的幫助,

,其中x =緯度,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

第一:

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 
+0

很多感謝您的有用信息和及時回覆。 – KSK 2012-02-14 00:30:23

+0

這裏我使用了一個循環中的附加數據(mydata.txt),在使用imagesc(xi,yi,Z)繪圖時,我每天都會獲得多個圖表,因此最終的圖表需要一段時間。請讓我知道,在繪圖時如何避免這種情況並獲得最終情節。感謝你的幫助。 – KSK 2012-02-14 01:03:33