如何修改函数中的数组?
MATLAB是一种通过价值语言。 我有一个递归函数来处理像素的邻居。 每次调用函数时,复制图像(在我的情况下是两张图像)是非常昂贵的。
我使用全局变量来解决问题。 有没有其他方法可以使递归函数修改数组?
这里有三个选项,但也许你不需要其中的任何一个,因为Matlab使用'copy-on-write',即只有修改它们才会复制变量。
blockproc
或im2col
函数来重写该函数。 最后,如果你想继续使用当前的方案,我强烈建议使用持久变量而不是全局变量。
MATLAB并不总是按值传递的,在某些情况下,MATLAB的新版本可以通过引用传递,请参阅本SO帖子中的就地操作和有关MATLAB内存管理的更一般性讨论。
如果没有tail-call优化,使用递归效率低下,并且MATLAB不知道它,但是每个递归都可以转化为循环。
如果将递归函数作为存储图像数据的另一个函数中的嵌套函数,则递归函数可以修改图像数据而无需传递给它。
链接地址: http://www.djcxy.com/p/80511.html上一篇: How to modify an array in function?
下一篇: Why use callback in JavaScript, what are its advantages?