我是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