Find the first N non-zero elements in each row of a matrix

后端 未结 6 1534
误落风尘
误落风尘 2020-12-21 08:02

I have a matrix in MATLAB with zeroes and I would like to get another matrix with the first N non-zero elements in each row. Let\'s say for example N = 3<

6条回答
  •  独厮守ぢ
    2020-12-21 08:17

    One-liner solution:

    B = cell2mat(cellfun(@(c) c(1:N), arrayfun(@(k) nonzeros(A(k,:)), 1:size(A,1), 'uni', false), 'uni', false)).'
    

    Not terribly elegant or efficient, but so much fun!

提交回复
热议问题