From 2265028b7f616f54bbcc51365481f33a40c30b82 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Luk=C3=A1=C5=A1=20Ji=C5=99i=C5=A1t=C4=9B?= Date: Tue, 7 May 2024 16:00:30 +0200 Subject: [PATCH] Add the function detect_open This function returns an array of logicals, where the value is true only at the index, which corresponds with the time the valve only just opened. It should work like this: t(detect_open(t, p)) = t_when_valve_opened --- detect_open.m | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 detect_open.m diff --git a/detect_open.m b/detect_open.m new file mode 100644 index 0000000..4c20f01 --- /dev/null +++ b/detect_open.m @@ -0,0 +1,17 @@ +function opened = detect_open(t, p, threshold = 0.2, min_dist = 10) + dp = (p(2:end) - p(1:end - 1)) ./ (t(2:end) - t(1:end - 1)); + dp = dp / max(dp); + opened = dp > threshold; + for i = (length(opened):-1:1) + j = i - 1; + while (j > 0 && t(j) + min_dist > t(i)) + if (opened(j) == 1) + opened(i) = 0; + break; + end + j -= 1; + end + end + opened = [0 opened]; + opened = logical(opened); +end -- 2.30.2