Effiziente Multiplikation von sehr großen Matrizen in MATLAB

Ich habe nicht genug Speicher, um einfach eine Diagonale D-by-D-matrix, da D ist groß. Ich bekomme immer ein "out of memory" - Fehler.

Anstelle der Durchführung M x D x D Operationen in die erste Multiplikation, die ich tun M x D Operationen, aber immer noch mein code dauert ewig zu laufen.

Kann jemand eine effektivere Art und Weise zum ausführen der Multiplikation A'*B*A? Hier ist, was ich bisher versucht habe:

D=20000
M=25

A = floor(rand(D,M)*10);
B = floor(rand(1,D)*10);

for i=1:D
    for j=1:M
        result(i,j) = A(i,j) * B(1,j);
    end
end    

manual = result * A';
auto = A*diag(B)*A';
isequal(manual,auto)

Effiziente Multiplikation von sehr großen Matrizen in MATLAB

Ich bin verwirrt. Ist die matrix B soll D-by-D oder M-von-M -? Dein Bild sagt der ehemalige, aber dein code suggeriert letzteres.
gut erkannt, nun korrigiert
Auch, versuchen Sie, um zu berechnen, A'BEin, die Ihnen würde eine M-von-M Ergebnis?
ja, das ist es, was ich versuche zu erreichen

InformationsquelleAutor matcheek | 2010-12-12

Schreibe einen Kommentar