167 lines
6.0 KiB
Matlab
167 lines
6.0 KiB
Matlab
files0b = {}; files1f = {};
|
|
targets0b = []; targets1f = [];
|
|
|
|
% dataset A
|
|
folder = 'calibration_data/02222018_outdoor_500/';
|
|
files = dir(folder); files = files(3:end); % remove . and ..
|
|
for i = length(files):-1:1
|
|
if (~contains(files(i).name, 'result') ||...
|
|
~contains(files(i).name, 'extract') ||...
|
|
contains(files(i).name, 'locs'))
|
|
|
|
elseif contains(files(i).name, '34-f6-4b-5e-69-1f')
|
|
files1f = [files1f, [folder, files(i).name]];
|
|
loc = sscanf(files(i).name, 'result_static_%f_%f_extract.txt');
|
|
targets1f = [targets1f, sqrt(sum((loc - [5;0]).^2)) * 100];
|
|
else
|
|
files0b = [files0b, [folder, files(i).name]];
|
|
loc = sscanf(files(i).name, 'result_static_%f_%f_extract.txt');
|
|
targets0b = [targets0b, sqrt(sum((loc - [0;0]).^2)) * 100];
|
|
end
|
|
end
|
|
|
|
% dataset B
|
|
folder = 'calibration_data/02142018_outdoor_480/';
|
|
files = dir(folder); files = files(3:end); % remove . and ..
|
|
for i = length(files):-1:1
|
|
if (~contains(files(i).name, 'result') ||...
|
|
~contains(files(i).name, 'extract') ||...
|
|
contains(files(i).name, 'locs'))
|
|
|
|
elseif contains(files(i).name, '34-f6-4b-5e-69-1f')
|
|
files1f = [files1f, [folder, files(i).name]];
|
|
loc = sscanf(files(i).name, 'result_static_%f_%f_extract.txt');
|
|
targets1f = [targets1f, sqrt(sum((loc - [4.8;0]).^2)) * 100];
|
|
else
|
|
files0b = [files0b, [folder, files(i).name]];
|
|
loc = sscanf(files(i).name, 'result_static_%f_%f_extract.txt');
|
|
targets0b = [targets0b, sqrt(sum((loc - [0;0]).^2)) * 100];
|
|
end
|
|
end
|
|
|
|
% % dataset C
|
|
% folder = 'calibration_data/outdoor/';
|
|
% files = dir(folder); files = files(3:end); % remove . and ..
|
|
% for i = length(files):-1:1
|
|
% if (~contains(files(i).name, 'result'))
|
|
%
|
|
% else
|
|
% files1f = [files1f, [folder, files(i).name]];
|
|
% targets1f = [targets1f, sscanf(files(i).name, 'result_%dcm.txt')];
|
|
% end
|
|
% end
|
|
|
|
[targets0b, orderI] = sort(targets0b);
|
|
files0b = files0b(orderI);
|
|
[targets1f, orderI] = sort(targets1f);
|
|
files1f = files1f(orderI);
|
|
|
|
all_data0b = [];
|
|
all_data1f = [];
|
|
% figure(1); clf;
|
|
for i = 1:length(files0b)
|
|
filename = files0b{i};
|
|
|
|
fileID = fopen(filename, 'r');
|
|
formatSpec = [...
|
|
'Target: %x:%x:%x:%x:%x:%x, status: %d, ',...
|
|
'rtt: %d psec, distance: %d cm\n'...
|
|
];
|
|
data = fscanf(fileID, formatSpec, [9 Inf]);
|
|
fclose(fileID);
|
|
if isempty(data)
|
|
data = readtable(filename, 'ReadVariableNames', 0);
|
|
if isempty(data)
|
|
continue
|
|
end
|
|
data = data(2:end, :);
|
|
caliDist = str2double(table2array(data(:, 2)))';
|
|
rawRTT = str2double(table2array(data(:, 3)))';
|
|
rawRTTStd = sqrt(str2double(table2array(data(:, 4)))');
|
|
rawDist = str2double(table2array(data(:, 5)))';
|
|
rawDistStd = sqrt(str2double(table2array(data(:, 6)))');
|
|
rssi = str2double(table2array(data(:, 7)))';
|
|
time = str2double(table2array(data(:, 8)))';
|
|
logistics = isnan(caliDist) | isnan(time);
|
|
else
|
|
% get rid of invalid data
|
|
data(:, data(7, :) ~= 0) = [];
|
|
data(:, data(9, :) < -1000) = [];
|
|
rawDist = data(9, :);
|
|
rawDistStd = zeros(size(rawDist));
|
|
rssi = zeros(size(rawDist));
|
|
caliDist = 0.8927 * rawDist + 553.3157;
|
|
logistics = isnan(caliDist);
|
|
end
|
|
caliDist(logistics) = [];
|
|
rssi(logistics) = [];
|
|
% figure(1); cdfplot(caliDist);
|
|
|
|
err = nanmedian(caliDist) - targets0b(i);
|
|
fprintf(...
|
|
'%.2f: rssi %.2f sig std %.2f dist std %.2f err %.2f\n',...
|
|
targets0b(i), nanmedian(rssi), nanstd(rssi), nanstd(caliDist), err)
|
|
% all_data0b = [all_data0b;...
|
|
% [nanmedian(rssi), nanstd(rssi),...
|
|
% nanmedian(rawDistStd), nanstd(rawDistStd), err]];
|
|
all_data0b = [all_data0b, caliDist - targets0b(i)];
|
|
end
|
|
for i = 1:length(files1f)
|
|
filename = files1f{i};
|
|
|
|
fileID = fopen(filename, 'r');
|
|
formatSpec = [...
|
|
'Target: %x:%x:%x:%x:%x:%x, status: %d, ',...
|
|
'rtt: %d psec, distance: %d cm\n'...
|
|
];
|
|
data = fscanf(fileID, formatSpec, [9 Inf]);
|
|
fclose(fileID);
|
|
if isempty(data)
|
|
data = readtable(filename, 'ReadVariableNames', 0);
|
|
if isempty(data)
|
|
continue
|
|
end
|
|
data = data(2:end, :);
|
|
caliDist = str2double(table2array(data(:, 2)))';
|
|
rawRTT = str2double(table2array(data(:, 3)))';
|
|
rawRTTStd = sqrt(str2double(table2array(data(:, 4)))');
|
|
rawDist = str2double(table2array(data(:, 5)))';
|
|
rawDistStd = sqrt(str2double(table2array(data(:, 6)))');
|
|
rssi = str2double(table2array(data(:, 7)))';
|
|
time = str2double(table2array(data(:, 8)))';
|
|
logistics = isnan(caliDist) | isnan(time);
|
|
else
|
|
% get rid of invalid data
|
|
data(:, data(7, :) ~= 0) = [];
|
|
data(:, data(9, :) < -1000) = [];
|
|
rawDist = data(9, :);
|
|
rawDistStd = zeros(size(rawDist));
|
|
rssi = zeros(size(rawDist));
|
|
caliDist = 0.8927 * rawDist + 553.3157;
|
|
logistics = isnan(caliDist);
|
|
end
|
|
caliDist(logistics) = [];
|
|
rssi(logistics) = [];
|
|
% figure(1); cdfplot(caliDist - targets1f(i));
|
|
|
|
err = nanmedian(caliDist) - targets1f(i);
|
|
fprintf(...
|
|
'%.2f: rssi %.2f sig std %.2f dist std %.2f err %.2f\n',...
|
|
targets1f(i), nanmedian(rssi), nanstd(rssi), nanstd(caliDist), err)
|
|
% all_data1f = [all_data1f;...
|
|
% [nanmedian(rssi), nanstd(rssi),...
|
|
% nanmedian(rawDistStd), nanstd(rawDistStd), err]];
|
|
all_data1f = [all_data1f, caliDist - targets1f(i)];
|
|
end
|
|
|
|
figure(2); clf; hold on;
|
|
cdfplot(all_data0b); cdfplot(all_data1f);
|
|
hold off; legend('0b', '1f');
|
|
pd1f = fitdist(all_data1f', 'Normal');
|
|
pd0b = fitdist(all_data0b', 'Normal');
|
|
pd = fitdist([all_data0b, all_data1f]', 'Normal');
|
|
|
|
% Normal distribution
|
|
% mu = -5.77619 [-7.52889, -4.02349] <- measurement error
|
|
% sigma = 52.8182 [51.6078, 54.0872]
|
|
% The sigma is consistent across observations in multiple ranging locations |