我是Matlab新手。你可能會發現這個問題很愚蠢,但我真的不知道下面的陳述是通過值操作還是通過引用操作。Matlab矩陣是通過值傳遞還是傳遞參考?
I = imread('logo.png');
binaryImage = im2bw(I, 0.4);
Itemp = binaryImage;
是否Itemp
是一個新的矩陣,它的值從binaryImage
被複制,或者它只是一個指針binaryImage
?
我是Matlab新手。你可能會發現這個問題很愚蠢,但我真的不知道下面的陳述是通過值操作還是通過引用操作。Matlab矩陣是通過值傳遞還是傳遞參考?
I = imread('logo.png');
binaryImage = im2bw(I, 0.4);
Itemp = binaryImage;
是否Itemp
是一個新的矩陣,它的值從binaryImage
被複制,或者它只是一個指針binaryImage
?
它通過參考,直到您修改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
矩陣。
這是我需要感謝的答案;) – 2012-02-25 12:55:32
你爲什麼要擔心Matlab的的內部?從程序員的角度來看,它是數組的一個副本。在內部,它可能是一個引用計數的對象,如果您修改它,它將生成一個副本。 – QuentinUK 2012-02-25 12:59:36