[討論] 依時間抓資料進行平均

看板MATLAB作者 (金岡)時間9年前 (2016/03/21 00:21), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/1
各位前輩好, 小弟這邊有些困惑想請教各位前輩是否有更快或更聰明的作法? 想將逐時資料依照每小時進行平均, 但是資料在時間上不會是連續的,可能每隔一段時間會有10至30分鐘的missing。 再來,因為資料的時間在input以後變成字串,所以事先都會用datevec進行轉換 大概是下列的作法, % 把在變成字串的時間併起來,並且利用datevec進行轉換 DateTimeString=[ndata1_raw(2:end,1);ndata2_raw(2:end,1);ndata3_raw(2:end,1)]; for i=1:length(DateTimeString) DateTimeNumber(i,:)=datevec(DateTimeString{i,1},1); i end % 所以時間像是2016/3/20 15:05:01最終會變成[2016 3 20 15 5 1] ---------------------------進行每小時平均的作法------------------------------------ % 在column 6的地方剛好是分鐘值, % 所以把第一分鐘的位置抓出來(有時剛好可能會是1.xx分鐘) datetime_minute_H4_01_0=find(ndata_H4_temp(:,6)>=1 & ndata_H4_temp(:,6)<2); % 目的是將1分鐘的位置抓出來 datetime_minute_H4_01=datetime_minute_H4_01_0(1:end-1); % 目的是將下個小時0分鐘的位置抓出來 datetime_minute_H4_00=datetime_minute_H4_01_0(2:end)-1; % 因為資料的最前面與最後面會有沒辦法平均的情形,所以先平均起來放 ndata_H4_hourly_1st_hour=[ndata_H4_temp(datetime_minute_H4_01(1)-2,1:5) mean(ndata_H4_temp(1:datetime_minute_H4_01(1)-1,7))]; ndata_H4_hourly_last_hour=[ndata_H4_temp(datetime_minute_H4_00(end)+1,1:5) mean(ndata_H4_temp(datetime_minute_H4_00(end)+1:end,7))]; % 使用loop將資料第7個column的值每小時進行平均,同時放入原本逐小時的時間 for i=1:length(datetime_minute_H4_01) ndata_H4_hourly_temp(i,:)=[ndata_H4_temp(datetime_minute_H4_01(i,1),1:5) mean(ndata_H4_temp(datetime_minute_H4_01(i,1):datetime_minute_H4_00(i,1),7))]; i end --------------------------------------結束------------------------------ 當每小時內有01分鐘 跟 下個小時的00分鐘的時候,都不會有問題。 但是當第01分鐘或下個小時的00分鐘missing的時候,就跑不出來了...... 我知道可以用datenum(DateTimeString)把我的時間格式轉成數字, 但是我每次再把這個數字輸出excel, 轉換格式成時間日期的時候,發現會多1901年的樣子... 所以我就沒朝該方向去寫... 不知道各位前輩是否有更好的做法? Many thanks! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.136.94.109 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1458490894.A.7AD.html

03/21 11:43, , 1F
把DateTimeNumber裡的分與秒去掉,用unique的IC功能編上流
03/21 11:43, 1F

03/21 11:43, , 2F
水號,再用accumarray去做平均
03/21 11:43, 2F

03/21 13:24, , 3F
謝謝sunev大大!! 我來試試看!
03/21 13:24, 3F

03/21 13:27, , 4F
unique的IC功能我不太了解,accumarry的功能我還要再
03/21 13:27, 4F

03/21 13:27, , 5F
從Help上理解一下
03/21 13:27, 5F
文章代碼(AID): #1MxiuEUj (MATLAB)
文章代碼(AID): #1MxiuEUj (MATLAB)