Can MATLAB pass by reference?
357 ビュー (過去 30 日間)
古いコメントを表示
How does MATLAB deal with this?
1 件のコメント
採用された回答
Doug Hull
2011 年 1 月 18 日
7 件のコメント
Bill Tubbs
2021 年 10 月 22 日
Both the links in the answer seem to be broken now. Does anybody have updated URLs?
Is this one of them perhaps:
Yorgos Tsitsikas
2023 年 9 月 15 日
その他の回答 (4 件)
Marco
2012 年 7 月 18 日
Is this also true for nested function calls? Cuz it seems like it only works for direct function calls. In my GUIDE gui I have a function (call it Fn_takesHandles) that takes in the figure handles and updates the axes, when called by callback functions directly works just as intended. However, I run into problems when the stack frame is not one-to-one. A callBack function calls a helper function called Auto which in turn calls Fn_takesHandles. In this case it does not work as intended. Any changes made to the figure handles by Fn_takesHandles is not persistent. How would you go about solving this problem?
Is there any way to declare pointers in matlab? Any help would be appreciated!!
1 件のコメント
Walter Roberson
2012 年 7 月 19 日
編集済み: Walter Roberson
2018 年 9 月 14 日
There is no way to declare pointers in MATLAB (at least not for calling MATLAB functions; there are ways to copy around pointers that have been created at the C / C++ level.)
Jason Climer
2017 年 6 月 20 日
Is this determined during the JIT compilation or as needed, i.e., is the copy of x made upon the function call or when the program executes
x(2) = 2;
?
1 件のコメント
Walter Roberson
2017 年 6 月 20 日
It is generally determined when the program executes, as it is not always possible to tell ahead of time whether a value is shared or not. Especially when you consider the hidden effect of assignin() .
Also, overloading can happen at run-time: the current directory or path of an operation at the time a routine is first JIT'd is not necessarily going to be the same as during a later operation.
There are cases where MATLAB does enough analysis to establish that "update in place" can happen; I do not know enough about the mechanics of that to say how it is done taking into account overloading.
Mandeguz
2017 年 6 月 22 日
How about when writing MEXs? Can one pass by reference within the computational routine and pull those values back to the main MATLAB code that called the MEX?
4 件のコメント
James Tursa
2018 年 9 月 14 日
Also note that as of R2015b, MATLAB passes arguments to mex routines as shared data copies (it used to pass them by reference).
James Tursa
2019 年 1 月 10 日
And as of R2018a, complex variable arguments to mex routines essentially get deep data copied in both directions if you use the -R2017a compilation model.
参考
カテゴリ
Help Center および File Exchange で Whos についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!