2012-02-25 24 views
7

Soy nuevo en Matlab. Puede encontrar esta pregunta tonta, pero realmente me pregunto si la siguiente declaración es una operación de valor por paso o una operación de referencia por paso.¿Las matrices de Matlab son transferidas paso por valor o paso por referencia?

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

¿El Itemp es una nueva matriz cuyos valores se copian de binaryImage, o es sólo un puntero a la binaryImage?

+2

¿Por qué estás preocupado por la parte interna de Matlab? Desde el punto de vista del programador, es una copia de la matriz. Internamente, es probable que sea un objeto contado de referencia que hará una copia si la modifica. – QuentinUK

Respuesta

12

Pase por referencia, hasta que modifique Itemp.

Cuando modifica Itemp matlab copiará binaryImage en Itemp y luego lo modificará.

Hice algunas pruebas interesantes al mismo tiempo. Si lo hace:

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

sólo una copia se guarda en la memoria. Si modifica A

A(1)=1; 

Entonces, Matlab hacer uno nueva copia de la matriz para el nuevo A, y las variables B, C, D, E siguen apuntando a la matriz de la antigua A.

+0

esa es la respuesta que necesito gracias;) –

Cuestiones relacionadas