2012-06-08 73 views
3

我一直使用Matlab 2011b和contourf/contourfm繪製北美地圖上的二維數據。我從mathworks網站上的contourfm幫助頁面開始,如果使用名爲「geoid」和參考矢量「geoidrefvec」的默認數據,它會很好用。Matlab contourf()在全球地圖上繪製數據

下面是一些簡單的code,與預設數據的工作原理:當我嘗試使用我的數據

figure 
axesm('MapProjection','lambert','maplo',[-175 -45],'mapla',[10 75]); 
framem; gridm; axis off; tightmap 

load geoid 
%geoidrefvec=[1 90 0]; 

load 'TECvars.mat' 
%contourfm(ITEC, geoidrefvec, -120:20:100, 'LineStyle', 'none'); 
contourfm(geoid, geoidrefvec, -120:20:100, 'LineStyle', 'none'); 

coast = load('coast'); 
geoshow(coast.lat, coast.long, 'Color', 'black') 
whitebg('w') 
title(sprintf('Total Electron Content Units x 10^1^6 m^-^2'),'Fontsize',14,'Color','black') 
%axis([-3 -1 0 1.0]); 
contourcbar 

,就會出現問題。我很確定參考矢量決定了地球上的數據應該繪製在哪裏,但是我找不到有關這個矢量如何工作的文檔或者如何創建一個文檔來處理不同的數據。

這是我的data .mat文件。 ITEC是要繪製的值的矩陣。關於網格相對於地球的位置的信息可以在稱爲RT的單元陣列中找到,但基本思想是。 ITEC(1,1)指Lat = 11 Long = -180,ITEC(58,39)指Lat = 72.5 Long = -53,數據均勻分佈。

有誰知道參考向量是如何定義數據放置在地圖上的?或者也許有另一種方法來實現這一點?提前致謝!

回答

2

好的。所以我想通了。我意識到,鑑於矢量中只有三個維度,緯度數據之間的度數必須與經度數據之間的度數相同。也就是說,每個水平數據點之間的間距必須與每個垂直點之間的間距相同。例如,1度。

參考矢量中的第一個值是每個數據點之間的距離(以度爲單位)(我認爲...這適用於我的情況),矢量中的兩個第二個值是最小緯度和最小經度分別。

在我的情況下,數據在每個方向上的間隔相等,但垂直和水平方向的間距不相同。我只是將數據內插到1x1網格密度並將向量中的第一個值設置爲1.

希望這可以幫助有相同問題的人。

雖然問題很快,但我回答了我自己的問題,我能得到賞金嗎?我討厭放棄50個'寶貴'的聲望點哈哈

+2

回答好幾個問題,你會在匆忙中獲得50個代表。 :) – tmpearce

+0

@GPSmaster你也被鼓勵接受你自己的答案(雖然它不會讓你的賞金回來)。 –

+0

如果有人想要50免費賞金,歡迎您聲明... – GPSmaster