return value optimization when overwriting

1 view (last 30 days)
Federico
Federico on 7 Feb 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.

Answers (2)

Jan
Jan on 7 Feb 2012
No, unfortuantely you cannot force Matlab to work inplace.

Federico
Federico on 14 Feb 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.

Categories

Find more on Introduction to Installation and Licensing in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!