rawdata = readtable('./example/20190505_170223_sig/98fc11691fc5.csv');
data = table2array(rawdata(:, [1,2,4,5,9]));
unique_types = unique(data(:,5));

figure(1); clf;
for j = 1:size(unique_types, 1)
    logistics = data(:,5) == unique_types(j);
    tmpdata = data(logistics, :);
    unique_xys = unique(tmpdata(:, 1:2), 'row');
    tmpdata_avg = [];
    for i = size(unique_xys, 1):-1:1
        xy_logistics = unique_xys(i, 1:2) == tmpdata(:, 1:2);
        xy_logistics = xy_logistics(:,1) & xy_logistics(:,2);
        tmpdata_avg(i, :) = [unique_xys(i, 1:2), mean(tmpdata(xy_logistics, 3:end), 1)];
    end
    ax1 = subplot(size(unique_types, 1), 4, 4 * j - 3);
    scatter3(tmpdata_avg(:,1), tmpdata_avg(:,2), tmpdata_avg(:,3), 100, tmpdata_avg(:,4), '.');
    caxis([-85, -20]); view([0, 90]);
    xlabel('loc x (m)'); ylabel('loc y (m)'); zlabel('time (s)'); 
    title(['packet type: ', num2str(unique_types(j))])
    
    ax2 = subplot(size(unique_types, 1), 4, 4 * j - 2);
    scatter3(tmpdata_avg(:,1), tmpdata_avg(:,2), tmpdata_avg(:,4), 100, tmpdata_avg(:,4), '.');
    center_x = mean(unique_xys(:,1));
    center_y = mean(unique_xys(:,2));
    xlim([-3.2, 3.2] + center_x); ylim([-3.2, 3.2] + center_y);
    caxis([-85, -20]);
    xlabel('loc x (m)'); ylabel('loc y (m)'); zlabel('RSS (dB)'); 
    title(['packet type: ', num2str(unique_types(j))])
    
    mymap = ones(64, 64) * -85;
    for ii = 1:64
        x_upper = center_x + 0.1 * (ii - 32);
        x_lower = center_x + 0.1 * (ii - 1 - 32);
        x_logistics = tmpdata(:, 1) >= x_lower & tmpdata(:, 1) <= x_upper;
        if sum(x_logistics) == 0
            continue;
        end
        for jj = 1:64
            y_upper = center_y + 0.1 * (jj - 32);
            y_lower = center_y + 0.1 * (jj - 1 - 32);
            y_logistics = tmpdata(:, 2) >= y_lower & tmpdata(:, 2) <= y_upper;
            logistics = x_logistics & y_logistics;
            if sum(logistics) > 0
                mymap(jj, ii) = median(tmpdata(logistics, 4));
            end
        end
    end
    ax3 = subplot(size(unique_types, 1), 4, 4 * j - 1);
    surf(mymap, 'EdgeColor', 'None'); view([0, 90]);
    xlim([1, 64]); ylim([1, 64]); 
    
    colorbar;
    
    ax4 = subplot(size(unique_types, 1), 4, 4 * j);
    cdfplot(mymap(:))
    xlim([-85, -40]);
    
end