2017-09-25 44 views
0

我想在Matlab中使用ncread子集.​​nc文件。我正在尋找劃分經度-74.6875至-10.3125(W)和緯度58.2500至84.7500(N)的數據來創建格陵蘭周圍的邊界框。我想要數據的每一天的子集。我嘗試下面的代碼,它適用於經度和緯度的,我需要的指數,但產生翻轉(倒置)格陵蘭的版本(見附表1):如何在Matlab中糾正ncread經緯度子集?

data = ncread('dust_ddep.nc','dust_ddep',[457 297 1], [104 54 Inf], [1 1 1]); %576x360x366 lon, lat, time 

當我嘗試繪製數據,我需要翻轉它,以確保冰島灰塵位於地理位置正確的地方(見附件)。緯度是相反的(需要從55到85 N,而不是相反)。

然後,我用繪製功能m_coast生產格陵蘭島的海岸線(見附件,2):

figure; 
data1 = data(:,:,160); %Grab one day of data 
imagesc(long1_sub,lat,data1) 
% m_pcolor(lon,lat,data(:,:,1)); %This comes up blank when I try to run m_pcolor 
shading flat; hold on; 
gland = m_coast('patch',[1 1 1],'edgecolor','k') 
% flipud(gland) %doesn't fix the upside down Greenland 
m_grid('box','fancy'); 

我在做什麼錯?這是我的開始和計數的順序嗎?或者,它是在我繪製圖像c的方式嗎?我也嘗試使用pcolor(不是m_pcolor),但我收到一個錯誤,說尺寸是錯誤的(但他們不是......)。我用這個代碼pcolorpcolor(long1_sub,lat,data1)和接收錯誤:

Error using pcolor (line 59) 
Matrix dimensions must agree. 

這些變量的尺寸爲:

Long1_sub is [104x1] 
lat is [54x1] 
data1 is [104x54] 

回答

0

爲於imagesc的原點是左上角,而不是左下角,這因此會「翻轉」你的Y軸。所以你需要翻轉y軸,使其像你通常所期望的那樣。

imagesc(long1_sub,flipup(lat),data1) 

imagesc非常不直觀,因此,我建議使用pcolor。至於爲什麼pcolor在使用相同變量時出現錯誤,pcolor文檔指出:「如果X和Y是向量,則X對應於C的列,Y對應於行。」由於DATA1是104x54,你想將其移至54x104,使其與經度/緯度同意,

pcolor(long1_sub,lat,data1') % Notice the ' next to data1 

我希望這有助於!

+0

我發現用imagesc的問題是我需要使用下面的代碼翻轉y軸:'set(gca,'ydir','normal');'而且,pcolor函數現在可以工作!看似簡單的東西花了很長時間才弄清楚。非常感謝! – user3052817