我是Matlab的新手。您可能会发现这个问题很愚蠢,但我真的很想知道下面的语句是按值传递操作还是按引用传递操作。
I = imread('logo.png');
binaryImage = im2bw(I, 0.4);
Itemp = binaryImage;
Itemp
是否是一个新的矩阵,其值是从binaryImage
复制的,还是指向binaryImage
的指针?
答案 0 :(得分:12)
通过引用传递,直到您修改Itemp
。
修改Itemp
时,matlab会将binaryImage
复制到Itemp
然后进行修改。
我做了一些有趣的测试。 如果你这样做:
A=rand(100);B=A;C=B;D=A;E=B;
内存中只保留一份副本。如果您修改A
A(1)=1;
然后,matlab为新A
和变量B
,C
,D
制作一个新矩阵副本, E
仍然指向旧A
的矩阵。
答案 1 :(得分:12)
Matlab使用copy-on-write策略