delete zeros from matrix

4 vues (au cours des 30 derniers jours)
Maria K
Maria K le 23 Juil 2020
How do I delete all the columns that have zeros with a for loop? I tried reducing the number of columns by one in every iteration but matlab shows me "index exceeds matrix dimentions".
p4 = [0 0 31 37 43 47; 0 0 19 13 7 3];
grammes = size(p3,1);
sthles = size(p3,2);
for i = 1 : grammes
for j = 1 : sthles
if iszero(p3(i,j)) == 1
p3(:,j) = [];
sthles = sthles - 1
end
end
end
  1 commentaire
Maria K
Maria K le 23 Juil 2020
Thanks on advance!

Connectez-vous pour commenter.

Réponse acceptée

Bruno Luong
Bruno Luong le 23 Juil 2020
Here is how using FOR-LOOP to delete zero column(s)
A = [0 0 31 37 43 47;
0 0 19 13 7 3];
[m,n] = size(A);
for j = n:-1:1 % must loop reversing
deleteflag = true;
for i = 1 : m
if A(i,j) ~= 0
deleteflag = false;
end
end
if deleteflag % only true if the entire column #j contains 0s
A(:,j) = [];
end
end

Plus de réponses (1)

madhan ravi
madhan ravi le 23 Juil 2020
p4(:, all(p4 == 0)) = []
  1 commentaire
Maria K
Maria K le 23 Juil 2020
Cool answer but I would like to know how to do it with a for loop..

Connectez-vous pour commenter.

Catégories

En savoir plus sur Numerical Integration and Differential Equations 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