2013-06-21 54 views
0

我有一個1437x159x1253的大型矩陣(讓我們稱之爲A)每日海冰數據2年多一點。我需要編寫一個代碼,該代碼需要每個月的日常數據,並且確實意味着(A,3)。所以基本上,1253是天。如果我從一月份開始,我需要在前31天的意思是(A,3),然後是2月的平均值(A,3),接下來的28或29天。因爲日子在31到30(二月份是28或29)之間交替,所以我不知道如何編寫代碼來做到這一點。我可以手動完成,但這需要一段時間。MATLAB將每日數據的3D數組切分爲月份數據段

謝謝!

回答

0

您可以使用布爾值初始化一個包含每個月的天數的數組,Mon = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]以檢查它是否是閏年(要設置Mon(2) = 29)。天數將幫助您適當地使用以下循環索引每個月:

index=1; 
for i=1:12 
    average = mean(A(:,:,index:(index+Mon(i)-1),3); 
    index = index+M(i);  % Starting location of the next month 
end 
+0

您能解釋如何使用布爾值來檢查它是否是閏年? – shizishan

+0

這一切都取決於你。如果您接受用戶輸入('是/否'),請參閱[輸入](http://www.mathworks.com/help/matlab/ref/input.html),或者您是否手動編輯代碼(將' leap_year = TRUE或FALSE')。從那裏,你可以使用'if ... then'語句來設置Mon(2)= 29。 –