return value optimization when overwriting

1 vue (au cours des 30 derniers jours)
Federico
Federico le 7 Fév 2012
Consider the following scenario.
function A=frobnicate(A)
A(1)=1;
end
X=zeros(2000,2000);
X=frobnicate(X);
By inspecting variables with `format debug`, one can see that Matlab (even in R2011b) makes an unnecessary copy of the whole 2000x2000 matrix when it calls the function in the last row. Is there a way to avoid the copy and let the function work on the data "in-place"?
I know about global variables and handle objects, but I read that both are quite inefficient and I doubt that they will actually make something like the above code faster.

Réponses (2)

Jan
Jan le 7 Fév 2012
No, unfortuantely you cannot force Matlab to work inplace.

Federico
Federico le 14 Fév 2012
I cannot understand how it works exactly, though, the return addresses inspected with "format debug" seem to change, but the time speedup is there.

Catégories

En savoir plus sur Startup and Shutdown dans Help Center et File Exchange

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by