如何根据另一个矩阵的成本对矩阵的行进行排序?

时间:2017-06-10 15:41:21

标签: matlab sorting arduino calibration mpu6050

6面法是一种非常便宜且快速的校准和加速度计方法,如我的MPU6050,here a great description of the method.

我做了6次测试,根据g矢量校准加速度计。

enter image description here

之后我建立一个矩阵,并在每一行中存储每个轴的平均值,用 m / s ^ 2 thanks to this question i automatically calculated the mean for each column in each file表示。 enter image description here

测试随机进行,我测试了所有六个位置,但我没有遵循任何路径。 所以我根据 Y矩阵,我的参考矩阵的种类手动排序最终矩阵 Y元素是固定的。

enter image description here

手动排序的矩阵如下

enter image description here

这里我如何手动排序矩阵

    meanmatrix=[ax ay az];
    mean1=meanmatrix(1,:);
    mean2=meanmatrix(2,:);
    mean3=meanmatrix(3,:);
    mean4=meanmatrix(4,:);
    mean5=meanmatrix(5,:);
    mean6=meanmatrix(6,:);
    meanmatrix= [mean1; mean3; mean2; mean4;mean6;mean5];

基于Y矩阵约束如何在不创建“先验”的情况下对矩阵进行排序?该测试是否存储在行中?

1 个答案:

答案 0 :(得分:1)

假设加速度计上的偏差不是很大,您可以查看矩阵的行,看看Y矩阵中的哪些行匹配。

sorted_meanmatrix = zeros(size(meanmatrix));
for rows = 1:length(Y)
    % Calculates the square of distance and see which row has a nearest distcance 
    [~,index] = min(sum((meanmatrix - Y(rows,:)).^2, 2)); 
    sorted_meanmatrix(rows,:) = meanmatrix(index,:);
end