iw_intel8260_localization/distribution_range.m

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