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