How do I exclude zeros from a matrix?
2 views (last 30 days)
Show older comments
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]
?
Accepted Answer
Andrei Bobrov
on 29 Apr 2013
Edited: Andrei Bobrov
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.';
More Answers (1)
Zhang lu
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
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!