Matlab: Erste Nicht-null-element der Zeile oder Spalte
Beispielsweise
A = [ -1 0 -2 0 0
2 8 0 1 0
0 0 3 0 -2
0 -3 2 0 0
1 2 0 0 -4];
wie bekomme ich einen Vektor der ersten von null verschiedenen Elemente in jeder Zeile?
- was würde Sie erwarten, wenn es eine "Nullen" - Zeile?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
max
:Zeilen, für die
sel
equalse null - sind alle Nullen und die entsprechende Spalte inc
ignoriert werden sollte.Ergebnis:
Um zu finden, die erste nicht-null-Zeilen-index (für jede Spalte) müssen Sie nur anwenden
max
auf die erste dimension:find
explodieren kann, wenn die Arbeit größere Matrizen.Hier ist eine Lösung basierend auf accumarray, die funktionieren, auch wenn eine Zeile mit Nullen.
accumarray
istaccumarray(r,c,[size(A,1),1],@min,NaN)
weilaccumarray
erfordert die Größe angegeben werden, wie[M 1]
(zumindest in meiner version von MATLAB)Können Sie es tun durch ausführen finden - Funktion für jede Zeile wie folgt: