Extracting data from timetable
10 ビュー (過去 30 日間)
古いコメントを表示
I have a timetable with multiple variables which vary spatially and temporally and spatially across a transect.
The variables are recorded at millimeter and minutely intervals. These are shown below as 'V_1, V_2, V_3, V_4, V_5... V_300'. The number here refers to the millimeter at which the measurements were taken, at time steps of t1, t2, t3... tn.
One variable ('Event') occurs at discrete time points and at discrete locations along the transect. Event data is either not present (NaN), or present (recorded as a number). For the 'present' events, the number refers to the spatial dimension: the millimeter along the transect at which tte event occurred.
The picture below shows a simplified view of the data, with annotations showing what I'd like to do.
I would like to:
- Output the value of the environmental variable at the time of each 'Event'.
- Calculate and output the change in each environmental variable for the preceding n timesteps that lead up to each 'Event'.
Is this possible, and how would I got about it?

Thank you very much.
0 件のコメント
採用された回答
Star Strider
2022 年 6 月 28 日
I am not certain what you want.
This should get you started —
tv = minutes(0:15).'; % Create Data, Table & Timetable
V = sort(rand(numel(tv), 4)*100);
Event = NaN(size(tv));
Event(6:5:end) = 1:3;
T1 = table(tv,V(:,1),V(:,2),V(:,3),V(:,4),Event, 'VariableNames',{'Time(min)','V1','V2','V3','V4','Event'});
TT1 = table2timetable(T1)
EvIdx = find(~ismissing(TT1.Event)); % Event Index Vector
TTs = TT1(EvIdx(1):EvIdx(2)-1,1:end-1) % First Section
td(1) = TTs.('Time(min)')(end) - TTs.('Time(min)')(1);
Vd(1,:) = TTs{end,:} - TTs{1,:};
for k = 1:numel(EvIdx)-1
TTs = TT1(EvIdx(k):EvIdx(k+1)-1,1:end-1) % Intermediate Sections
td(k+1) = TTs.('Time(min)')(end) - TTs.('Time(min)')(1);
Vd(k+1,:) = TTs{end,:} - TTs{1,:};
end
Out = array2table([minutes(td(:)), Vd], 'VariableNames',{'TimeSpan(min)',TT1.Properties.VariableNames{1:4}})
It takes the differences between the beginning and end values of each secton and saves them to ‘td’ and ‘Vd’ then puts those results in a table.
.
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Tables についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!