How to change an entire column.

2 vues (au cours des 30 derniers jours)
Anton Mulder
Anton Mulder le 29 Avr 2013
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]]

Réponse acceptée

Iman Ansari
Iman Ansari le 29 Avr 2013
A = randi(10,[10 640])-1;
B = A;
B(:,sum(A==0)>0)=0;
  1 commentaire
Jan
Jan le 29 Avr 2013
any(A, 2) is faster than sum(A==0)>0.

Connectez-vous pour commenter.

Plus de réponses (1)

Image Analyst
Image Analyst le 29 Avr 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 commentaire
Image Analyst
Image Analyst le 29 Avr 2013
If you want a terse "one-liner" you can do this:
A(:, any(~A)) = 0;

Connectez-vous pour commenter.

Catégories

En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by