Pregunta

I am working on a big matrix multiplication. I have a big matrix A (at least 5000x5000) and a column vector V (5000x1). In my code, each V is going to multiply each column of A element by element. I did it with a loop

K = zeros(5000, 5000);
for n=1:5000
  K(:, n) = V.*A(:, n);
end

but it is so slow. So I create a big matrix with each column assigned as V such that

MV=repmat(V,1,5000);
K = MV.*A;

it is fast but it waste too much of memory. When size of the matrix increase, it uses too much of memory. Is that any idea to use less memory but fast?

¿Fue útil?

Solución

classic bsxfun

K = bsxfun( @times, A, V );

Alternatively, you might want to look at James Tursa's MTIMESX (found in FEX).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top