51 lines
1.8 KiB
Matlab
51 lines
1.8 KiB
Matlab
function diffs = calibration_walking(filename)
|
|
startI = 3600;
|
|
endI = 100;
|
|
if contains(filename, '_r_')
|
|
startI = 100;
|
|
endI = 3600;
|
|
end
|
|
% param_linear = [0.8927,553.3157]; % outdoor
|
|
param_linear = [0.9376, 558.0551]; % indoor
|
|
data = readtable(filename, 'ReadVariableNames', 0);
|
|
data = data(2:end, :);
|
|
caliDist = str2double(table2array(data(:, 2)))';
|
|
rawRTT = str2double(table2array(data(:, 3)))';
|
|
rawRTTVar = str2double(table2array(data(:, 4)))';
|
|
rawDist = str2double(table2array(data(:, 5)))';
|
|
rawDistVar = str2double(table2array(data(:, 6)))';
|
|
rssi = str2double(table2array(data(:, 7)))';
|
|
time = str2double(table2array(data(:, 8)))';
|
|
|
|
rawDist = movmean(rawDist, 10, 'omitnan');
|
|
rssi = movmean(rssi, 10, 'omitnan');
|
|
% for i = size(caliDist, 2) - 3: -4: 1
|
|
% rawDist(i) = nanmean(rawDist(i: i + 3));
|
|
% rawDist(i + 1: i + 3) = [];
|
|
% rssi(i) = nanmean(rssi(i: i + 3));
|
|
% rssi(i + 1: i + 3) = [];
|
|
% time(i + 1: i + 3) = [];
|
|
% end
|
|
|
|
dist = rawDist * param_linear(1) + param_linear(2);
|
|
targets = (time - time(1)) * (endI - startI) / (time(end) - time(1)) + startI;
|
|
diffs = (targets - dist);
|
|
fprintf("** mean diff: %.4f cm\n", nanmean(diffs));
|
|
fprintf("** median diff: %.4f cm\n", nanmedian(diffs));
|
|
|
|
figure(1); clf;
|
|
scatter3(time, dist, rssi); hold on; scatter(time, dist, '.')
|
|
plot([time(1), time(end)], [startI, endI]); view([0, 90]);
|
|
if contains(filename, '_r_')
|
|
title('back')
|
|
else
|
|
title('front')
|
|
end
|
|
|
|
figure(2); hold on;
|
|
pd = fitdist(diffs(~isnan(diffs))', 'Normal')
|
|
prob_fit = cdf(pd, diffs(~isnan(diffs))');
|
|
scatter(diffs(~isnan(diffs))', prob_fit);
|
|
cdfplot(diffs);
|
|
% histogram(diffs, 'BinWidth', 1, 'Normalization', 'pdf');
|
|
end |