creating a temporary variable
    16 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
This is a quick question. Compare
A = sparse(...); B = A - C;
and
B = sparse(...) - C;
Memory-wise spoken, is there a difference? Will the second one use less memory because I'm not creating a variable?
0 comentarios
Respuesta aceptada
  Walter Roberson
      
      
 el 3 de En. de 2012
        There will be very little memory difference. For a transient value, MATLAB creates everything about the storage except the symbol table entry with the name and a pointer to the descriptor.
3 comentarios
  Walter Roberson
      
      
 el 3 de En. de 2012
				As far as I know, MATLAB only uses memory "in-place" when the same variable appears in a function call and in the assignment of the results from that call. There was another condition as well but I have forgotten it now.
I'm thinking it might have been Rick Rossom who listed the conditions in a comment, but it might have been someone else at MathWorks.
Más respuestas (1)
  Nicholas
 el 3 de En. de 2012
        Did you try using tic toc?
 tic
A = sparse(magic(3));
B = A - C;
disp(toc)
tic
B = sparse(magic(3)) - C;
disp(toc)
In any case the result depends on matrix dimensions and matrix initialization. If you want to improve memory management you should initialize a matrix/vector first and than try to improve matrix calculation.
3 comentarios
  Nicholas
 el 3 de En. de 2012
				If you are interested so deeply in memory allocation you should write your code in C and do not use matlab.
You can not see under the hood in matlab..
Ver también
Categorías
				Más información sobre Loops and Conditional Statements 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!


