Multiplicação eficiente de matrizes muito grandes no MATLAB
Não tenho memória suficiente para simplesmente criar uma matriz diagonal de D-D, pois D é grande. Eu continuo recebendo um erro de 'falta de memória'.
Em vez de executar operações M x D x D na primeira multiplicação, eu faço operações M x D, mas ainda assim meu código leva anos para ser executado.
Alguém pode encontrar uma maneira mais eficaz de realizar a multiplicaçãoA'*B*A
? Aqui está o que eu tentei até agora:
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)