2013-05-06 75 views
0

我有一個NetCDF文件,變量日(在朱利安)lat,lon和臭氧。我已將該文件轉換爲lon,lat和day(按此順序)的3D矩陣。MATLAB基於某些列匹配的陣列組合

我還有一個.mat文件,包含Year,Month,Day(常規的1,2,3格式),Lat,Long在2D表格中。

我需要將NetCDF文件中的臭氧值作爲附加列添加到.mat文件中,同時匹配兩個文件之間的day,lat和lon。所以基本上,我必須找到哪些臭氧值對應於.mat文件的日期,緯度和經度,並將該值作爲單獨的列添加。並非所有的臭氧值都會被使用。

什麼樣的腳本可以做到這一點?我對MATLAB很陌生,這對我來說非常困難。謝謝!!!

+0

只是爲了闡明:數據集1包含日期,兩個座標和臭氧水平;數據集2包含日期和兩個座標 - 任務是使用數據集2作爲數據集1的過濾器? – Schorsch 2013-05-06 17:25:55

+0

數據集1是一個3D矩陣,其中x是lon,y是緯度,z是日(茱莉安日)。 數據集2包含幾個列:年,月,日,朱連日,拉特,lon。 結合兩個數據集,以便朱利安日,拉特和lon匹配這兩個數據集將形成茱莉亞日,拉特,lon和臭氧的新陣列。 如果編寫一個循環,其中如果Julian日,lat和lon匹配數據集1和數據集2之間的循環,它將被置於具有茱莉亞日,拉特,lon和臭氧信息的矩陣中。如果不是,則將其置於具有相同信息的單獨矩陣中。 希望這是明確的! – shizishan 2013-05-06 17:44:30

回答

0

有兩個選項你可以看看:

A{1,1} = {'Monday 7/15';... 
      'Tuesday 8/01'; ... 
      'Wednesday 1/21';... 
      'Thursday 2/30';... 
      'Friday 11/02'}; 

A{2,1} = [0.1234; ... 
      0.2345; ... 
      0.3465; ... 
      0.4576; ... 
      0.5687]; 

B = {'Wednesday 1/21'; ... 
    'Friday 11/02'}; 

k = 1; 
for i = 1:size(A{1,1},1) 
    for j = 1:size(B,1) 
     if strcmp(A{1,1}(i),B(j)) == 1 
      OZONE(k) = A{2,1}(i); 
      k = k + 1; 
     end 
    end 
end 

,或者可能更適合Julian日期格式:

A{1,1} = [1234.5; ... 
      2345.6; ... 
      3456.7; ... 
      4576.8; ... 
      5678.9]; 

A{2,1} = [0.1234; ... 
      0.2345; ... 
      0.3465; ... 
      0.4576; ... 
      0.5687]; 

B = [2345.6; ... 
    5678.9]; 

k = 1; 
for i = 1:size(A{1,1},1) 
    for j = 1:size(B,1) 
     if A{1,1}(i) == B(j) 
      OZONE(k) = A{2,1}(i); 
      k = k + 1; 
     end 
    end 
end 

一兩個環以上例子應該讓你檢查您需要的日期的數據集。