Finding index of vector from its original matrix

后端 未结 2 489
刺人心
刺人心 2021-01-27 11:52

I have a matrix of 2d lets assume the values of the matrix

a =
    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    1         


        
2条回答
  •  梦如初夏
    2021-01-27 12:32

    It depends on how you build those divided matrices. For example:

    a = magic(5);
    d = a([2 1 2 3],:);
    

    then the matching rows are obviously: 2 1 2 3


    EDIT:

    Let me expand on the idea of using ismember shown by @EitanT to handle floating-point comparisons:

    tf = any(cell2mat(arrayfun(@(i) all(abs(bsxfun(@minus, a, d(i,:)))<1e-9,2), ...
        1:size(d,1), 'UniformOutput',false)), 2)
    

    not pretty but works :) This would be necessary for comparisons such as: 0.1*3 == 0.3

    (basically it compares each row of d against all rows of a using an absolute difference)

提交回复
热议问题