Selaa lähdekoodia

add function to measure signal arrival times to all capsules

Fernando Pablo Lopez-Lezcano 9 vuotta sitten
vanhempi
sitoutus
692746f61d
1 muutettua tiedostoa jossa 47 lisäystä ja 0 poistoa
  1. 47 0
      calibration/src/sphear_signal_arrival_times.m

+ 47 - 0
calibration/src/sphear_signal_arrival_times.m

@@ -0,0 +1,47 @@
+%% -*- mode: octave -*-
+%%
+%% *SpHEAR Project
+%%
+%% sphear_signal_arrival_times: measure rotation axis wobble in the measurements
+%%
+%% usage:
+%%   [] = sphear_signal_arrival_times(SIG);
+%%
+%% SIG: array of signals (measurements, capsules, samples)
+%%
+%% Copyright 2016-2017, Fernando Lopez-Lezcano, All Rights Reserved
+%% nando@ccrma.stanford.edu
+%%
+%%  This program is free software: you can redistribute it and/or modify
+%%  it under the terms of the GNU General Public License as published by
+%%  the Free Software Foundation, either version 3 of the License, or
+%%  (at your option) any later version.
+%%
+%%  This program is distributed in the hope that it will be useful,
+%%  but WITHOUT ANY WARRANTY; without even the implied warranty of
+%%  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+%%  GNU General Public License for more details.
+%%
+%%  You should have received a copy of the GNU General Public License
+%%  along with this program.  If not, see <htp://www.gnu.org/licenses/>.
+
+function [DELTA] = sphear_signal_arrival_times(SIG)
+  for m = 1:size(SIG, 1);
+    mean = 0;
+    for c = 1:size(SIG, 2);
+      [peaks, locs] = findpeaks(abs(reshape(SIG(m, c, :), 1, [])));
+      [value, index] = max(peaks);
+      loc = locs(index);
+
+      printf("m=%d, c=%d: %d - %f\n", m, c, loc, value);
+
+      mean = mean + loc;
+    end
+    if (m == 1)
+      first = mean/size(SIG, 2);
+    end
+    printf("m=%d: time=%f, delta=%f\n", m, mean/size(SIG, 2), mean/size(SIG, 2) - first);
+    DELTA(m) = mean/size(SIG, 2) - first;
+  end
+end
+