poster
2019-12-10, 20:48
具有一个具有四个非常大的矩阵的结构,这些矩阵对应于灰度图像。根据函数的输入,我想将这四个矩阵之一存储在变量中。但是,由于这些矩阵很大,因此我不想创建它们的副本。
Matlab中有什么类似于C ++中引用的概念吗?或者换句话说:是否可以有两个指向同一矩阵的变量?
回答:
Matlab对变量使用“写入时的惰性副本” (http://blogs.mathworks.com/loren/2006/05/10/memory-management-for-functions-and-variables/) 。这意味着,如果将数组(或所有数组)传递给函数,除非您写入数组,否则它们不会重复。换句话说,您可能不需要做您想做的事。
例如,如果将图像存储在具有imgStruct字段到fourthImage字段的firstImage结构中,并且将imgStruct.fourthImage作为函数的输入传递,则即使该函数内部调用了inputImage ,该数组也不会重复。
如果您打算写入图像,则可以创建一个句柄类 (http://www.mathworks.com/help/matlab/handle-classes.html)来存储图像数据,该句柄类 (http://www.mathworks.com/help/matlab/handle-classes.html)通过引用传递(因此,如果您在函数内部修改图像,它也会在您的基本工作空间中进行修改)。
更多&回答... (https://stackoverflow.com/questions/3427288)
Matlab中有什么类似于C ++中引用的概念吗?或者换句话说:是否可以有两个指向同一矩阵的变量?
回答:
Matlab对变量使用“写入时的惰性副本” (http://blogs.mathworks.com/loren/2006/05/10/memory-management-for-functions-and-variables/) 。这意味着,如果将数组(或所有数组)传递给函数,除非您写入数组,否则它们不会重复。换句话说,您可能不需要做您想做的事。
例如,如果将图像存储在具有imgStruct字段到fourthImage字段的firstImage结构中,并且将imgStruct.fourthImage作为函数的输入传递,则即使该函数内部调用了inputImage ,该数组也不会重复。
如果您打算写入图像,则可以创建一个句柄类 (http://www.mathworks.com/help/matlab/handle-classes.html)来存储图像数据,该句柄类 (http://www.mathworks.com/help/matlab/handle-classes.html)通过引用传递(因此,如果您在函数内部修改图像,它也会在您的基本工作空间中进行修改)。
更多&回答... (https://stackoverflow.com/questions/3427288)