Matlab-Matrix-Multiplikation ignoriert nans?
Ich habe zwei Matrizen A
und B
was ich will, sich zu vermehren, aber Sie enthalten nan
s.
Den Standard multiplizieren stellt nan
nach unten die gesamte Spalte das Ergebnis, wo es sogar eine single nan
in den Daten. Ich möchte Sie zu ignorieren, wie nansum
/nanmean
usw machen. In anderen Worten, anstatt computing
sum( A(i,j) * B(j,k) )
Ich soll nansum
.
Ich vermute, dies ist möglich durch ersetzen nan
mit 0
, und dann die Multiplikation, aber der Punkt, der mit nansum
ist, zu vermeiden, dass, rechts?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der Grund, warum die Multiplikation der Ergebnisse in
NaN
s ist, dass es keine einzig wahre Art und Weise, in der Sie behandelt werden sollen. Wenn in Ihrem Fall, Sie sollten ersetzt werden durch null, es ist am einfachsten zu schreibenvor der Ausführung der Multiplikation. Ich würde abraten, re-writing-matrix-Multiplikation, da Sie nicht bekommen, eine ähnliche Leistung, built-in matrix-algebra aus deinem eigenen code.
nansum
, und besondersnanmean
etc sind Funktionen der statistics toolbox, woNaN
s nicht einfach ersetzt durch null, tatsächlich aber entfernt sich aus der Berechnung, da im Rahmen der StatistikNaN
wird verwendet, um anzuzeigen, fehlende Daten Punkte. Es gibt keinenanmult
gibt, weil in der Statistik, die man nicht oft-matrix-Multiplikation, und wenn Sie das tun (z.B. im Rahmen einer regression), dass eine einzige Beobachtung fehlt ein Vektor in der Regel bedeutet, dass Sie wollen, werfen Sie die gesamte Zeile/Spalte, sowieso.NaN
s an alle, ich würde jedoch überlegen, ersetzt Sie diese mit nach die Multiplikation der Matrizen. Wenigstens dies ermöglicht die Identifizierung der Elemente im Ergebnis, welche nicht beruhen auf fehlenden Werten. Dann wieder, es hängt alles davon ab, was man erreichen will.eig(nancov(X))'
durchX
zur Schätzung einer matrix mit PCA, außerX
enthält fehlende Werte. Ich denke in diesem Zusammenhangnan-->0
Sinn macht?python
ist nicht markiert in der Frage