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

时间:2012-02-25 12:51:48

标签: matlab matrix pass-by-reference

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

I = imread('logo.png');
binaryImage = im2bw(I, 0.4);
Itemp = binaryImage;

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

2 个答案:

答案 0 :(得分:12)

通过引用传递,直到您修改Itemp

修改Itemp时,matlab会将binaryImage复制到Itemp然后进行修改。

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

A=rand(100);B=A;C=B;D=A;E=B;

内存中只保留一份副本。如果您修改A

A(1)=1;

然后,matlab为新A和变量BCD制作一个新矩阵副本, E仍然指向旧A的矩阵。

答案 1 :(得分:12)

Matlab使用copy-on-write策略