Matlab矩阵是按值传递还是按引用传递?

Yun*_*zel 8 matlab matrix pass-by-reference

我是Matlab的新手.您可能会发现这个问题很愚蠢,但我真的很想知道下面的语句是按值传递操作还是按引用传递操作.

I = imread('logo.png');
binaryImage = im2bw(I, 0.4);
Itemp = binaryImage;
Run Code Online (Sandbox Code Playgroud)

Itemp是一个新的矩阵,其值是从中复制的binaryImage,还是只是指向binaryImage?的指针?

Oli*_*Oli 13

在您修改之前,它将通过引用传递Itemp.

当你修改Itempmatlab将复制binaryImageItemp然后修改它.

我做了一些有趣的测试.如果你这样做:

A=rand(100);B=A;C=B;D=A;E=B;
Run Code Online (Sandbox Code Playgroud)

只有一个副本保存在内存中.如果你修改A

A(1)=1;
Run Code Online (Sandbox Code Playgroud)

然后,MATLAB让一个矩阵的新副本新A,和变量B,C,D,E仍然指向旧的矩阵A.


Cit*_*ane 12

Matlab使用写时复制策略