A具有四个非常大的矩阵的结构,这些矩阵对应于灰度图像。根据我的函数输入,我想将这四个矩阵中的一个存储在一个变量中。但是,由于这些矩阵非常大,我不想创建它们的副本。
Matlab中是否存在与C ++中的引用概念类似的东西?换句话说:是否可以将两个变量指向同一个矩阵?
答案 0 :(得分:19)
Matlab对变量使用"lazy copy on write"。这意味着如果将数组(或所有数组)传递给函数,除非您写入数组,否则它们不会被复制。换句话说,你可能不需要做你想做的事。
例如,如果您将图片存储在imgStruct
字段firstImage
到fourthImage
的结构中,并且您通过了imgStruct.fourthImage
作为函数的输入,即使调用了数组,也不会复制数组。函数内部inputImage
。
如果您打算写入图像,可以创建handle class来存储您的图像数据,该数据通过引用传递(因此,如果您修改了函数内部的图像,它也会在您的图像中修改基础工作空间)。