# Deleting Nonzero elements in each row

8 views (last 30 days)
dan berkowitz on 17 Oct 2017
Commented: Cedric Wannaz on 18 Oct 2017
Hi,
I have a 5 x 5 matrix with the 2 zeros in each row. How can I delete the nonzero elements from each row?
Any help would be appreciated. Thanks,
DB

Walter Roberson on 17 Oct 2017
YourNewMatrix = zeros( size(YourMatrix,1), 2 );
After deleting all the non-zero elements of each row, only zeros are going to be left. You might as well construct an all-zero matrix directly.
Cedric Wannaz on 17 Oct 2017

Cedric Wannaz on 17 Oct 2017
Edited: Cedric Wannaz on 17 Oct 2017
Here is one way:
>> A
A =
0 0 5 5 4
1 0 1 3 0
4 2 0 0 3
5 5 0 0 3
0 3 1 0 1
>> [~, ~, v] = find( A.' ) ;
>> B = reshape( v, 3, [] ).'
B =
5 5 4
1 1 3
4 2 3
5 5 3
3 1 1
.. and I don't know if you posted another delete question that was pretty close an hour ago or if it was someone else, but an answer was:
C = max((A == permute(B(:,1),[3,2,1])) .* permute(1:size(B,1), [1,3,2]), [], 3)
for
A = [2 3 4; 4 5 6; 7 8 9] ;
B = [7 5; 3 4; 4 3; 8 4; 9 4] ;
Cedric Wannaz on 18 Oct 2017