Efficient Matrix Multiplication
    1 visualización (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
I have A(2000x5000). I need to perform the following:
P1 = A(:,1)*A(:,1)';
  for i=2:5000    
     P1 = P1 + AA(:,i)*A(:,i)'
  end
What is the most efficient way to do above? It takes so much time to do it right now due to size of the arrays.
3 comentarios
  the cyclist
      
      
 el 26 de Feb. de 2011
				From his initialization step, I would infer that "AA" is just a typo of "A."
  Jan
      
      
 el 27 de Feb. de 2011
				Just an actually too obvious comment: If AA is not typo, A*A' is not a matching solution. So, Sam Da, we need your help.
Respuesta aceptada
  the cyclist
      
      
 el 26 de Feb. de 2011
        P1 = A * A';
On my machine, that cut the execution time from 330 seconds to 1.5. :-)
3 comentarios
  Oleg Komarov
      
      
 el 26 de Feb. de 2011
				A = rand(10);
P1 = A(:,1)*A(:,1)';
 for i=2:10
 P1 = P1 + A(:,i)*A(:,i)';
 end
 P2 = A * A';
 abs(P1-P2) < eps*3
Cyclist's method is essentially the same.
  James Tursa
      
      
 el 26 de Feb. de 2011
				Yep. I went back & checked the code I used to double check the result & saw my mistake. Thanks.
Más respuestas (0)
Ver también
Categorías
				Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





