From 2108cbbab0c3b39cecccbc8eda5c22dbdacd988a Mon Sep 17 00:00:00 2001
From: Thomas Lambert <t.lambert@uliege.be>
Date: Sun, 11 Dec 2022 02:16:22 +0100
Subject: [PATCH] fix(sync)!: improve starting point of tunnel data

---
 utils/syncdata.m | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/utils/syncdata.m b/utils/syncdata.m
index 9003ff9..5571acf 100644
--- a/utils/syncdata.m
+++ b/utils/syncdata.m
@@ -81,7 +81,7 @@ function [startIdx, startTime] = getstartardu(arduData)
     % Get a first approximation for the starting point of each wing set
     startIdx = [NaN, NaN];
     for i = 1:2
-        startIdx(i) = findsignalstart(arduData(:, ANGLE_IDX(i)), N_STABLE_VAL, DCRIT);
+        startIdx(i) = findsignalstart(arduData(:, ANGLE_IDX(i)), N_STABLE_VAL, 'ardu', DCRIT);
     end
     startIdx = min(startIdx);
     startTime = arduData(startIdx, 1);
@@ -101,21 +101,21 @@ function [startIdx, startTime] = getstarttunnel(tunnelData)
 
     startIdx = [NaN, NaN];
     for i = 1:2
-        startIdx(i) = findsignalstart(tunnelData(:, FZ_IDX(i)), SAMPLING / 2, DCRIT);
+        startIdx(i) = findsignalstart(tunnelData(:, FZ_IDX(i)), SAMPLING / 2, 'tunnel', DCRIT);
     end
     startIdx = TRIM_MS + min(startIdx);
     startTime = startIdx / SAMPLING;
 
 end
 
-function startIdx = findsignalstart(signal, stableIdx, fixCrit)
+function startIdx = findsignalstart(signal, stableIdx, type, fixCrit)
     % FINDSIGNALSTART Find start of motion by looking at deviations from a 'stable' signal
 
     % Constants and defaults
     LARGE_DEV_STD = 10; % Multiplier of std to be considered 'large deviation'
     DEBUG = false;
 
-    if nargin < 3
+    if nargin < 4
         fixCrit = 0;
     end
 
@@ -133,6 +133,12 @@ function startIdx = findsignalstart(signal, stableIdx, fixCrit)
     inflexPts = find([0; diff(sign(dSignal))] ~= 0); % Zeros to get idx in signal and not dSignal
     startIdx = inflexPts(end);
 
+    % For WT, the start is not the last extremum, but the last minimum in the derivate
+    if strcmp(type, 'tunnel')
+        [~, newIdx] = min(meanDev(startIdx:largeDevIdx(1)));
+        startIdx = (startIdx - 1) + newIdx;
+    end
+
     if DEBUG
         cutoff = ones(size(signal)) * devCrit;
         figure;
-- 
GitLab