【发布时间】:2011-03-26 12:46:17
【问题描述】:
A 有一个结构,其中包含四个对应于灰度图像的非常大的矩阵。根据我的函数的输入,我想将这四个矩阵之一存储在一个变量中。但是,由于这些矩阵非常大,我不想创建它们的副本。
Matlab 中是否有类似于 C++ 中的引用概念的东西?或者换句话说:是否有可能有两个变量指向同一个矩阵?
【问题讨论】:
标签: matlab
A 有一个结构,其中包含四个对应于灰度图像的非常大的矩阵。根据我的函数的输入,我想将这四个矩阵之一存储在一个变量中。但是,由于这些矩阵非常大,我不想创建它们的副本。
Matlab 中是否有类似于 C++ 中的引用概念的东西?或者换句话说:是否有可能有两个变量指向同一个矩阵?
【问题讨论】:
标签: matlab
Matlab 使用"lazy copy on write" 表示变量。这意味着如果您将数组(或所有数组)传递给您的函数,除非您写入数组,否则它们不会被复制。换句话说,你可能不需要做你想做的事。
例如,如果您将图像存储在具有字段firstImage 到fourthImage 的结构imgStruct 中,并且您通过例如imgStruct.fourthImage 作为函数的输入,数组不会重复,即使它被调用,例如inputImage 函数内部。
如果你打算写入图像,你可以创建一个handle class来存储你的图像数据,它是通过引用传递的(因此,如果你在函数内部修改图像,它也会在你的基础工作区中被修改)。
【讨论】: