2014-03-12 77 views
0

我正在寫for循環來平均每小時進行10年的小時測量。測量日期記錄爲MATLAB日期。在MATLAB中按小時迭代循環

我想通過使用0.0417進行迭代,因爲它是1AM 00/00/00的datenum,但是每次迭代時都會在幾秒鐘內添加錯誤。

任何人都可以推薦一個更好的方法來讓我按小時迭代嗎?

date = a(:,1); 
load = a(:,7); 

%loop for each hour of the year 
for i=0:0.0417:366 

    %set condition 
    %condition removes year from current date 
    c = date(:)-datenum(year(date(:)),0,0)==i; 

    %evaluate condition on load vector and find mean 
    X(i,2)=mean(load(c==1)); 

end 

回答

2

一個鐘頭1/24一天,不0.0417的持續時間。使用1/24,一年的精度足夠高。

要獲得更高的精度,請使用類似datenum(y,1,1,1:24*365,0,0)的東西來生成所有時間戳。

+0

這麼簡單很明顯,非常感謝。 – kekni

2

爲了避免誤差漂移完全,使用整數指定索引,上下分割循環內的結果:

for hour_index=1:365*24 
    hour_datenum = (hour_index - 1)/24; 
end