diff --git a/calibration_plot.m b/calibration_plot.m index 207a0fd..7b75a0c 100644 --- a/calibration_plot.m +++ b/calibration_plot.m @@ -1,6 +1,6 @@ % clear all; %close all; -folder = 'calibration_data/new_indoor/'; +folder = 'calibration_data/outdoor/'; files = dir(folder); files = files(3:end); % remove . and .. targets = zeros(1, length(files)); for i = length(files):-1:1 @@ -54,6 +54,8 @@ for i = 1:length(files) data(:, data(7, :) ~= 0) = []; data(:, data(9, :) < -1000) = []; rawDist = data(9, :); + rawDistVar = zeros(size(rawDist)); + rssi = zeros(size(rawDist)); end mean_result(i) = mean(rawDist); @@ -67,6 +69,9 @@ for i = 1:length(files) fprintf('* std: %.2f (uncalibrated)\n', std(rawDist)); figure(1); cdfplot(rawDist); + diffs_each = param_linear(1) * rawDist + param_linear(2) - targets(i); + pd = fitdist(diffs_each(~isnan(diffs_each))', 'Normal'); + fit_pd_each(i) = pd; % figure(2); % scatter3(... % sqrt(rawDistVar),... @@ -162,6 +167,15 @@ fprintf(' parabolic mode: %.6f\n', mstd_parabolic); % diffs = [diffs, calibration_walking('calibration_data/walking_outdoor/result_walking_3800_to_100cm_1517706881.txt')]; % diffs = [diffs, calibration_walking('calibration_data/walking_outdoor/result_walking_3800_to_100cm_1517706976.txt')]; % diffs = [diffs, calibration_walking('calibration_data/walking_outdoor/result_walking_3800_to_100cm_1517707172.txt')]; + +% +% diffs = [diffs, calibration_walking('calibration_data/walking_outdoor/result_walking_3800_to_100cm_r_1517706433.txt')]; +% diffs = [diffs, calibration_walking('calibration_data/walking_outdoor/result_walking_3800_to_100cm_r_1517706537.txt')]; +% diffs = [diffs, calibration_walking('calibration_data/walking_outdoor/result_walking_3800_to_100cm_r_1517706636.txt')]; +% diffs = [diffs, calibration_walking('calibration_data/walking_outdoor/result_walking_3800_to_100cm_r_1517706737.txt')]; +% diffs = [diffs, calibration_walking('calibration_data/walking_outdoor/result_walking_3800_to_100cm_r_1517706835.txt')]; +% diffs = [diffs, calibration_walking('calibration_data/walking_outdoor/result_walking_3800_to_100cm_r_1517706930.txt')]; +% diffs = [diffs, calibration_walking('calibration_data/walking_outdoor/result_walking_3800_to_100cm_r_1517707073.txt')]; % pd = fitdist(diffs(~isnan(diffs))', 'Normal'); % prob_fit = cdf(pd, diffs(~isnan(diffs))'); % figure(10); clf; hold on; @@ -171,17 +185,24 @@ fprintf(' parabolic mode: %.6f\n', mstd_parabolic); % title('Distribution of Distance Err When Walking') % legend('fitted \mu=53.5043, \sigma=72.1852', 'actual dist error', 'location', 'best') +% % +% diffs = []; +% diffs = [diffs, calibration_walking('calibration_data/walking_indoor/result_walking_3600_to_100cm_1517693155.txt')]; +% diffs = [diffs, calibration_walking('calibration_data/walking_indoor/result_walking_3600_to_100cm_1517693287.txt')]; +% diffs = [diffs, calibration_walking('calibration_data/walking_indoor/result_walking_3600_to_100cm_1517693408.txt')]; +% diffs = [diffs, calibration_walking('calibration_data/walking_indoor/result_walking_3600_to_100cm_1517693534.txt')]; % -diffs = []; -diffs = [diffs, calibration_walking('calibration_data/walking_indoor/result_walking_3600_to_100cm_1517693155.txt')]; -diffs = [diffs, calibration_walking('calibration_data/walking_indoor/result_walking_3600_to_100cm_1517693287.txt')]; -diffs = [diffs, calibration_walking('calibration_data/walking_indoor/result_walking_3600_to_100cm_1517693408.txt')]; -diffs = [diffs, calibration_walking('calibration_data/walking_indoor/result_walking_3600_to_100cm_1517693534.txt')]; -pd = fitdist(diffs(~isnan(diffs))', 'Normal'); -prob_fit = cdf(pd, diffs(~isnan(diffs))'); -figure(11); clf; hold on; -scatter(diffs(~isnan(diffs))', prob_fit); -cdfplot(diffs); xlim([-200, 200]) -xlabel('Distance Err (cm)') -title('Distribution of Distance Err When Walking') -legend('fitted \mu=28.8055, \sigma=50.1228', 'actual dist error', 'location', 'best') \ No newline at end of file +% diffs = []; +% diffs = [diffs, calibration_walking('calibration_data/walking_indoor/result_walking_3600_to_100cm_r_1517693224.txt')]; +% diffs = [diffs, calibration_walking('calibration_data/walking_indoor/result_walking_3600_to_100cm_r_1517693350.txt')]; +% diffs = [diffs, calibration_walking('calibration_data/walking_indoor/result_walking_3600_to_100cm_r_1517693475.txt')]; + + +% pd = fitdist(diffs(~isnan(diffs))', 'Normal'); +% prob_fit = cdf(pd, diffs(~isnan(diffs))'); +% figure(11); clf; hold on; +% scatter(diffs(~isnan(diffs))', prob_fit); +% cdfplot(diffs); xlim([-200, 200]) +% xlabel('Distance Err (cm)') +% title('Distribution of Distance Err When Walking') +% legend('fitted \mu=28.8055, \sigma=50.1228', 'actual dist error', 'location', 'best') \ No newline at end of file diff --git a/calibration_walking.m b/calibration_walking.m index ca430f7..caba669 100644 --- a/calibration_walking.m +++ b/calibration_walking.m @@ -5,8 +5,10 @@ function diffs = calibration_walking(filename) startI = 100; endI = 3600; end -% param_linear = [0.8927,553.3157]; % outdoor - param_linear = [0.9376, 558.0551]; % indoor +% param_linear = [0.6927, 400.3157]; % medical_try_0b +% param_linear = [0.7927,483.3157]; % medical_try_1f + 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)))'; @@ -16,9 +18,20 @@ function diffs = calibration_walking(filename) rawDistVar = str2double(table2array(data(:, 6)))'; rssi = str2double(table2array(data(:, 7)))'; time = str2double(table2array(data(:, 8)))'; + % clear invalid data + logistics = rawDist < -1000 | rawDist > 10000 | isnan(time); + caliDist(logistics) = []; + rawRTT(logistics) = []; + rawRTTVar(logistics) = []; + rawDist(logistics) = []; + rawDistVar(logistics) = []; + rssi(logistics) = []; + time(logistics) = []; + % normalize time + time = (time - time(1)) ./ (time(end) - time(1)); - rawDist = movmean(rawDist, 10, 'omitnan'); - rssi = movmean(rssi, 10, 'omitnan'); +% 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) = []; @@ -33,19 +46,25 @@ function diffs = calibration_walking(filename) fprintf("** mean diff: %.4f cm\n", nanmean(diffs)); fprintf("** median diff: %.4f cm\n", nanmedian(diffs)); - figure(1); clf; + 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 +% plot([time(1), time(end)], [startI, endI]); + view([0, 90]); +% if contains(filename, '_r_') +% title('back') +% figure(9); hold on; +% plot(flip((time - time(1)) ./ (time(end) - time(1))), rssi) +% else +% title('front') +% figure(9); hold on; +% plot(((time - time(1)) ./ (time(end) - time(1))), rssi) +% 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'); +% figure(2); clf; 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 \ No newline at end of file