Multiplicación eficiente de matrices muy grandes en MATLAB
No tengo suficiente memoria para simplemente crear una matriz diagonal D-por-D, ya que D es grande. Sigo recibiendo un error de "falta de memoria".
En lugar de realizar operaciones M x D x D en la primera multiplicación, realizo operaciones M x D, pero aún así mi código tarda años en ejecutarse.
¿Alguien puede encontrar una manera más efectiva de realizar la multiplicación?A'*B*A
? Esto es lo que he intentado hasta ahora:
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)