## How do I exclude zeros from a matrix?

on 29 Apr 2013

### Andrei Bobrov (view profile)

How do I exclude zeros from a matrix and create a new matrix? For example:

A = [1 2 0 3 0 4 5 0; 7 0 0 0 2 3 4 1] and I want

A = [1 2 3 4 5 0 0 0; 7 2 3 4 1 0 0 0]

?

cfjunior

### cfjunior (view profile)

on 29 Apr 2013

Actualy I want to move all zeros to the end of each column

## Products

No products are associated with this question.

### Andrei Bobrov (view profile)

on 29 Apr 2013
Edited by Andrei Bobrov

### Andrei Bobrov (view profile)

on 29 Apr 2013

```s = size(A);
A1 = zeros(s);
for j1 = 1:s(1)
A1(j1,1:nnz(A(j1,:))) = nonzeros(A(j1,:));
end
```

other variant:

```At = A.';
i1 = sum(At~=0);
s = size(At);
A1 = zeros(size(At));
A1(sub2ind(s,i1,1:s(2))) = 1;
out = zeros(s);
out(flipud(cumsum(flipud(A1)))>0) = At(At ~= 0);
out = out.';
```

cfjunior

on 29 Apr 2013

thank you

### Zhang lu (view profile)

on 29 Apr 2013

You just show an simple matrix , which has the same zeros in each row. So,if you matirx is this case, the code as first one. else, you can try the second code.

```clear all
clc
A =[ 1     2     0     3     0     4     5     0
7     0     0     0     2     3     4     1];
A=A';
New_A=reshape(A(A~=0),[],size(A,2))';
New_A(:,size(A,1))=0
```
```clear all
clc
A =[ 1     2     0     3     0     4     5     0
7     0     0     0     2     3     4     1
1     5     6     5     5     0     0     3];
[m,n]=size(A);
for i=1:m
B=A(i,A(i,:)~=0);
New_A(i,1:length(B))=B;
end
New_A(i,n)=0
```

#### Join the 15-year community celebration.

Play games and win prizes!

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi