get interpolated values from timetable

5 ビュー (過去 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 Center および File ExchangeCalendar についてさらに検索

製品


リリース

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by