How to delete columns of a matrix that have fewer than 3 non-zero elements

Hello,
How can I delete columns of a matrix that have fewer than 3 non-zero elements? Thank you!

4 Comments

This is assuming matrix is nxn and n>>3.
Like fewer than three non-zero elements or is it a cell array ? Please define:
A = magic(5); %all columns have 5 elements
Yes, that is what I meant. Fewer than 3 non-zero elements.
I can define it as matrix A is 5x5. Say two columns (column 1 and 3) have only 2 non-zero elements.

Sign in to comment.

 Accepted Answer

Hi, I'm sure this isn't the most efficient way:
x =[
5 0 1 4 1
3 0 0 2 1
1 0 2 2 4
4 3 0 2 3
4 2 0 1 3];
for nn =1:size(x,2)
numz(nn) = length(find(x(:,nn)==0));
end
x(:,numz>2) = [];

1 Comment

Actually I did this:
for nn =1:size(x,2)
numz(nn)=length(find(x(:,nn)~=0));
end
x(:,numz<3)=[];
It worked! Thank you!

Sign in to comment.

More Answers (0)

Categories

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!