Discover MakerZone

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

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

New to MATLAB?

How to change an entire column.

Asked by Anton Mulder

Anton Mulder

on 29 Apr 2013
Accepted Answer by Iman Ansari

Iman Ansari

Hi,

I have a matrix with a dimension of 10x640. The matrix is filled with ones and zeros. If there is a zero in one of columns, I want the entire column to be zeros. How can I do this?

Example:

[[1,0,1];[1,1,1]]

Output should be:

[[1,0,1];[1,0,1]]

0 Comments

Anton Mulder

Anton Mulder

Products

No products are associated with this question.

2 Answers

Answer by Iman Ansari

Iman Ansari

on 29 Apr 2013
Accepted answer
 A = randi(10,[10 640])-1;
 B = A;
 B(:,sum(A==0)>0)=0;

1 Comment

Jan Simon

Jan Simon

on 29 Apr 2013

any(A, 2) is faster than sum(A==0)>0.

Iman Ansari

Iman Ansari

Answer by Image Analyst

Image Analyst

on 29 Apr 2013

Try this:

% Make sample data.
A = ones(10, 640);
% Stick a zero in columns 3, and 5.
A(9, 3) = 0;
A(8, 5) = 0
% Now that we have some sample data, do what Anton wants.
% Find out which columns have zeros in them
columnsWithZeros = any(~A);  % Assumes A is only 0's and 1's.
A(:, columnsWithZeros) = 0; % Set whole column(s) to zero.

1 Comment

Image Analyst

Image Analyst

on 29 Apr 2013

If you want a terse "one-liner" you can do this:

A(:, any(~A)) = 0;
Image Analyst

Image Analyst

Contact us