2012-02-25 160 views
7

我是Matlab新手。你可能会发现这个问题很愚蠢,但我真的不知道下面的陈述是通过值操作还是通过引用操作。Matlab矩阵是通过值传递还是传递参考?

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

是否Itemp是一个新的矩阵,它的值从binaryImage被复制,或者它只是一个指针binaryImage

+2

你为什么要担心Matlab的的内部?从程序员的角度来看,它是数组的一个副本。在内部,它可能是一个引用计数的对象,如果您修改它,它将生成一个副本。 – QuentinUK 2012-02-25 12:59:36

回答

12

它通过参考,直到您修改Itemp

当您修改Itemp matlab将复制binaryImageItemp然后修改它。

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

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

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

A(1)=1; 

然后,MATLAB使一个新矩阵的副本新A和变量BCDE仍然指向旧A矩阵。

+0

这是我需要感谢的答案;) – 2012-02-25 12:55:32