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

9

我是Matlab的新手。你可能觉得这个问题很傻,但我真的想知道下面的语句是按值传递操作还是按引用传递操作。

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

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


2
你为什么担心Matlab的内部呢?从程序员的角度来看,它只是一个数组的副本。在内部,它可能是一个引用计数对象,如果你修改它,它会进行复制。 - QuentinUK
2个回答

13

这是传递引用,直到你修改了Itemp

当你修改Itemp时,Matlab会将binaryImage复制到Itemp,然后再对其进行修改。

我之前做了一些有趣的测试。

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

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

A(1)=1;

然后,Matlab为新的A制作了一份矩阵副本,而变量BCDE仍指向旧A的矩阵。


13

这是更重要的,实际上 - zinking

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接