matlab 如何根据另一个矩阵的约束对一个矩阵的行进行排序?

jvlzgdj9  于 8个月前  发布在  Matlab
关注(0)|答案(1)|浏览(121)

6面方法是一种非常便宜和快速的方法来校准和加速计,如我的MPU 6050,这里有一个很好的描述方法。
我做了6个测试来校准基于g矢量的加速度计。

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

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

手动排序的矩阵如下

这里我是如何手动排序矩阵的

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矩阵约束,如何在不知道“先验”存储在行中的测试的情况下对矩阵进行排序?

ffdz8vbo

ffdz8vbo1#

假设加速度计上的偏差不是很大,您可以查看矩阵的行,并查看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

相关问题