Filter matrix rows depending on values in a second matrix

后端 未结 3 1893
旧巷少年郎
旧巷少年郎 2020-12-04 03:38

Given a 2x3 matrix x and a 4x2 matrix y, I\'d like to use each row of y to index into x. If the value in x i

3条回答
  •  -上瘾入骨i
    2020-12-04 04:19

    >> x = [1, 2, 3; -1, 2, -1];
    >>y = [1, 1; 
        1, 2; 
        1, 3; 
        2, 1;
        2, 2;
        2, 3];
    >>row_idx = reshape((x == -1)',1,6);
    >>y = y(row_idx,:);
    

    I think you didn't include all the index of x in y. I included all of them in y. Have a look..

    Generalized version:

    >> x = [1, 2, 3; -1, 2, -1];
    >>y = [1, 1; 
        1, 2; 
        1, 3; 
        2, 1;
        2, 2;
        2, 3];
    >>row_idx = reshape((x == -1)',1,size(x,1)*size(x,2));
    >>y = y(row_idx,:);
    

提交回复
热议问题