how can I find a specific data in time table in matlab?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hamed Hedayatnia
am 17 Okt. 2019
Bearbeitet: Andrei Bobrov
am 18 Okt. 2019
I am trying to extract the freez-thaw cycles in a timetable.freezing of stone only occur when the temperature drops below−3 °C in a day and thawing when temperature rises above 1 °C in next day. My quastion is that how can I define a function for it and then retime the time table based on it.
I need to find the days with mean temperature below−3 °C, followed by a day with mean temperature above 1 °C.(meteorological data file in attachment.)
0 Kommentare
Akzeptierte Antwort
Andrei Bobrov
am 17 Okt. 2019
Bearbeitet: Andrei Bobrov
am 18 Okt. 2019
i = diff(3*(data_mean_daily.tabrizmat7 < -3) + (data_mean_daily.tabrizmat7 > 1)) == -2;
T_out = data_mean_daily([i;false]|[false;i],:);
as at Sebastian:
i = (data_mean_daily.tabrizmat7(1:end-1) < -3) & (data_mean_daily.tabrizmat7(2:end) > 1);
T_out = data_mean_daily(find(i(:)')+[0;1],:);
8 Kommentare
Andrei Bobrov
am 18 Okt. 2019
k = 3*(data_mean_daily.tabrizmat7 < -3) + (data_mean_daily.tabrizmat7 > 1);
k is the vector of days, if the element has a value of 3, then the temperature of this day is less than -3, if the value is 1, the temperature is more than +1. We are looking for a combination in our case [3; 1] or diff([3;1]).
Weitere Antworten (1)
Sebastian Bomberg
am 17 Okt. 2019
You can offset temperature by one day and compare against >= 4.
idx = data_mean_daily.tabrizmat7(1:end-1) >= 2 & ... % temp at current day greater 2 AND
data_mean_daily.tabrizmat7(2:end) >= 4; % temp at next day greate 4
data_mean_daily(idx,:)
idx has one row less than data_mean_daily but the missing last row will be treated as false anyway.
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!