get interpolated values from timetable

조회 수: 6 (최근 30일)
Ryan
Ryan 2024년 2월 1일
편집: Stephen23 2024년 2월 1일
I have a timetable (using readtimetable from a csv).
datetime, tempA, tempB
1/1/1990 9:00, 36, 12
1/1/1990 10:00, 28, 24
...
I have a time that I want to extract a interpolated temp. Lets say 1/1/1990 9:32. How can I get tempA and tempB as linearly interpolated given a random time. I dont necessarily want to resample all the data which I see you can do.

채택된 답변

Stephen23
Stephen23 2024년 2월 1일
편집: Stephen23 2024년 2월 1일
INTERP1 accepts DATETIME objects:
dt = datetime(1990,1,1,[9;10],0,0);
A = [36;28];
B = [12;24];
T = table(dt,A,B)
T = 2×3 table
dt A B ____________________ __ __ 01-Jan-1990 09:00:00 36 12 01-Jan-1990 10:00:00 28 24
newT = datetime(1990,1,1,9,32,0)
newT = datetime
01-Jan-1990 09:32:00
newA = interp1(T.dt,T.A,newT)
newA = 31.7333
newB = interp1(T.dt,T.B,newT)
newB = 18.4000
You could even combine them into one INTERP1 call:
newAB = interp1(T.dt,T{:,["A","B"]},newT)
newAB = 1×2
31.7333 18.4000
Or you could use a TIMETABLE and RETIME:
TT = table2timetable(T)
TT = 2×2 timetable
dt A B ____________________ __ __ 01-Jan-1990 09:00:00 36 12 01-Jan-1990 10:00:00 28 24
newTT = retime(TT,newT,'linear')
newTT = 1×2 timetable
dt A B ____________________ ______ ____ 01-Jan-1990 09:32:00 31.733 18.4

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Calendar에 대해 자세히 알아보기

제품


릴리스

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by