ich eine große Sparse Matrix, die ich arbeite, aber die Einfachheit halber habe ich es unten geschrieben, wie gezeigt:Solving singuläre Sparse Matrix MATLAB
row = [1,3];
col = [1,3];
val = [22,33];
B = sparse(row,col,val,3,3)
22 0 0
0 0 0
0 0 33
Diese Matrix singulär ist und nicht über eine inverse dass Ich kann für eine Lösung von verwenden:
[A]=[B][C]
=>[B]\[A] = [C]
.
Um dies zu beheben, müssen alle Zeilen und Spalten, die nur 0 enthalten, entfernt werden. Im obigen Beispiel würde ich Zeile 2 und Spalte 2 entfernen, bevor ich die Sparse-Matrix erstelle.
Aber wenn ich das versuche, wird der von den Zeilen- und Spaltenvektoren (3,3) beschriebene Index außerhalb der Matrix-Dimensionen zeigen und mir einen Fehler geben. Was kann ich tun, um dieses Problem zu lösen?
Ist das nicht eine unglaublich ineffiziente Methode im Umgang mit Large-Sparse-Matrizen (1000000x1000000)? – Lobstw
@Lobstw Nein, weil alle Zwischenwerte auch "spärlich" sind – Suever
Vielen Dank für die Klärung. Dies führt jedoch nicht zu den erwarteten Ergebnissen für einen Fall wie: "[22 0 0; 44 0 0; 0 0 33]" Die 2. Zeile sollte nicht entfernt werden – Lobstw