matlab

[matlab] 시계열 데이터 처리

humming_stereo 2022. 8. 2. 09:34
수정 : 2023-06-05

목표

timetable 활용하여 데이터 월평균 처리

 


 

과정

1. 데이터 불러오기 (바다누리 해양정보 서비스 : 1시간 간격 조위 데이터)

  • + 전처리
data = importdata("01_data\강화대교_2022년_1시간 조위.txt",' ',5);
tp.time={};
for ii = 1:length(data.textdata)
    if length(data.textdata{ii,:}) == 16
        tp.time(end+1,1) = data.textdata(ii,:);
    end
end

 

2. struct형태로 변수 저장

  • timetabel 변환을 위해 시간데이터는 datetime 형식으로 저장
d1.time = datetime(tp.time,'Format','yyyy/MM/dd HH:mm');
d1.level = data2.data(1:length(d1.time));

 

3. struct → table → timetable 변환

  • struct → timetable 직통으로 변환 불가능
T1 = struct2table(d1);
T2 = table2timetable(T1);

 

4. 리샘플링

  • 빈 결측구간 nan으로 채우기
  • 원하는 시간 간격, 원하는 데이터 처리 방식 입력
    ex) yearly, monthly, hourly
    ex) linear, mean, max
T3 = retime(T2,'regular','fillwithmissing','TimeStep',hours(1));
T4 = retime(T3,"monthly","mean");

 

5. timetable → table → struct 변환

T5 = timetable2table(T4);
d2 = table2struct(T4,'ToScalar',true);

 


 

결과

 


Reference

https://kr.mathworks.com/help/matlab/ref/timetable.retime.html

https://kr.mathworks.com/matlabcentral/answers/1819185-filling-missing-times-in-timetable-with-nan-using-retime