Find the index of the last non-zero element in each row of a given matrix?

后端 未结 4 2231
执念已碎
执念已碎 2021-02-20 03:22

For an arbitrary sized matrix x, how do I find the index of the last non-zero element in each row of a given matrix?

For example, for the matrix

         


        
4条回答
  •  自闭症患者
    2021-02-20 03:49

    Here's a shorter version, combining find and accumarray

    x = [ 0 9 7 0 0 0; 5 0 0 6 0 3; 0 0 0 0 0 0; 8 0 4 2 1 0 ];
    %# get the row and column indices for x
    [rowIdx,colIdx] = find(x);
    %# with accumarray take the maximum column index for every row
    v = accumarray(rowIdx,colIdx,[],@max)'
    v =
         3   6   0   5
    

提交回复
热议问题