2012-02-25 96 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