delete zeros from matrix

4 Ansichten (letzte 30 Tage)
Maria K
Maria K am 23 Jul. 2020
Beantwortet: Bruno Luong am 23 Jul. 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

Akzeptierte Antwort

Bruno Luong
Bruno Luong am 23 Jul. 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

Weitere Antworten (1)

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

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Numerical Integration and Differential Equations finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by