return value optimization when overwriting

1 次查看(过去 30 天)
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.

回答(2 个)

Jan
Jan 2012-2-7
No, unfortuantely you cannot force Matlab to work inplace.

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

类别

Help CenterFile Exchange 中查找有关 Introduction to Installation and Licensing 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by