Azzera filtri
Azzera filtri

delete rows of a matrix

4 visualizzazioni (ultimi 30 giorni)
dav
dav il 18 Mar 2013
I have a vector
A = [ 1 0 2;
0 3 4;
3 5 0;
0 0 0;
1 1 1 ]
I need to delete the rows with ALL ELEMeTNS = 0 that means I want to get
B = [ 1 0 2;
0 3 4;
3 5 0;
1 1 1 ] form A.
Can someone please help me with this? I have to use this command inside a LOOP. So, I don't know in which row this could happen.
So, I need a code that finds and deletes the rows with all elements equal to zero.
Thanks.

Risposta accettata

Walter Roberson
Walter Roberson il 18 Mar 2013
~any(A(J,:)) when you are examining row J.

Più risposte (1)

Image Analyst
Image Analyst il 18 Mar 2013
Once you graduate to the more MATLAB-ish, non-loop, vectorized way, you'd do it like this:
clc;
A = [ 1 0 2;
0 3 4;
3 5 0;
0 0 0;
1 1 1 ]
rowsToKeep = any(A,2)
B = A(rowsToKeep, :)
Why do you have to do it in a loop? Seems like a dumb requirement.
  2 Commenti
dav
dav il 18 Mar 2013
I have to employ this in a simulation program. thanks.
Image Analyst
Image Analyst il 19 Mar 2013
You can employ my code in a simulation program. Being in a simulation program is not a reason why it has to be a for loop. But whatever...it doesn't matter....

Accedi per commentare.

Categorie

Scopri di più su MATLAB in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by