added ground truth to java method

fixed some bugs
improved algo and results
This commit is contained in:
toni
2019-01-27 10:47:46 +01:00
parent 6bb8bb6b4f
commit 49042a0cfb
8 changed files with 222 additions and 70 deletions

View File

@@ -8,8 +8,8 @@
%files = dir(fullfile('../../measurements/2018.06/manfred/LGWatchR/', '*.csv'));
%files = dir(fullfile('../../measurements/2018.06/peter/Huawai/', '*.csv'));
%files = dir(fullfile('../../measurements/2018.06/peter/mSensor/', '*.csv'));
%files = dir(fullfile('../../measurements/2018.06/frank/mSensor/', '*.csv'));
files = dir(fullfile('../../measurements/2018.06/leon/mSensor/', '*.csv'));
files = dir(fullfile('../../measurements/2018.06/frank/mSensorTest/', '*.csv'));
%files = dir(fullfile('../../measurements/2018.06/leon/mSensor/', '*.csv'));
%files_sorted = natsortfiles({files.name});
for file = files'
@@ -98,7 +98,7 @@ for file = files'
%set cur ground truth
if(length(gtData) > 1)
curTimestamp = timestamps(i);
curTimestamp = timestamps(i) - timestamps(1);
while(curTimestamp > gtData(gtIdx,1) && gtIdx < length(gtData))
curGtBpm = gtData(gtIdx,2);
gtIdx = gtIdx + 1;
@@ -106,6 +106,8 @@ for file = files'
else
curGtBpm = gtData;
end
%measure periodicity of window and use axis with best periodicity
[corr_x, lag_x] = xcov(m(i-window_size:i,3), (window_size/2), "coeff");
[corr_y, lag_y] = xcov(m(i-window_size:i,4), (window_size/2), "coeff");
@@ -121,7 +123,7 @@ for file = files'
%distanz zwischen den vektoren nehmen und in eine normale autocorrelation zu packen
%aufpassen wegen der norm, dass die richtung quasi nicht verloren geht.
%https://en.wikipedia.org/wiki/Lp_space
[corr_3D, lag_3D] = distCorr(m(i-window_size:i, 3:5), (round(window_size * 0.8)));
[corr_3D, lag_3D] = distCorr(m(i-window_size:i, 3:5), (window_size/2));
corr_x_pos = corr_x;
corr_y_pos = corr_y;
@@ -150,19 +152,20 @@ for file = files'
idx_y = findFalseDetectedPeaks(idx_y_raw, lag_y, corr_y);
idx_z = findFalseDetectedPeaks(idx_z_raw, lag_z, corr_z);
idx_mag = findFalseDetectedPeaks(idx_mag_raw, lag_mag, corr_mag);
idx_3D = findFalseDetectedPeaks(idx_3D_raw, lag_3D', corr_3D);
%idx_3D = findFalseDetectedPeaks(idx_3D_raw, lag_3D', corr_3D);
idx_3D = idx_3D_raw;
Dwindow = m(i-window_size:i,3);
Dwindow_mean_ts_diff = mean(diff(lag_3D(idx_3D) * sample_rate_ms)); %2.5 ms is the time between two samples at 400hz
Dwindow_mean_bpm = (60000 / (Dwindow_mean_ts_diff));
figure(10);
plot(lag_3D, corr_3D, lag_3D(idx_3D), corr_3D(idx_3D), 'r*', lag_3D(idx_3D_raw), corr_3D(idx_3D_raw), 'g*')
hold ("on")
m_label_ms = strcat(" mean ms: ", num2str(Dwindow_mean_ts_diff));
m_label_bpm = strcat(" mean bpm: ", num2str(Dwindow_mean_bpm));
title(strcat(" ", m_label_ms, " ", m_label_bpm));
hold ("off");
% figure(10);
% plot(lag_3D, corr_3D, lag_3D(idx_3D), corr_3D(idx_3D), 'r*', lag_3D(idx_3D_raw), corr_3D(idx_3D_raw), 'g*')
% hold ("on")
% m_label_ms = strcat(" mean ms: ", num2str(Dwindow_mean_ts_diff));
% m_label_bpm = strcat(" mean bpm: ", num2str(Dwindow_mean_bpm));
% title(strcat(" ", m_label_ms, " ", m_label_bpm));
% hold ("off");
Xwindow = m(i-window_size:i,3);
Xwindow_mean_ts_diff = mean(diff(lag_x(idx_x) * sample_rate_ms)); %2.5 ms is the time between two samples at 400hz