2012-02-25 12 views
7

Sono nuovo al Matlab. Potresti trovare questa domanda sciocca, ma mi chiedo davvero se la seguente affermazione sia un'operazione pass-by-value o un'operazione di riferimento pass-by.Le matrici Matlab sono trasferite pass-by-value o pass-by-reference?

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

fa la Itemp è una nuova matrice i cui valori vengono copiati da binaryImage, o è solo un puntatore al binaryImage?

+2

Perché siete preoccupati per i meccanismi interni di Matlab? Dal punto di vista del programmatore è una copia dell'array. Internamente è probabilmente un oggetto contato di riferimento che farà una copia se lo modifichi. – QuentinUK

risposta

12

Passa per riferimento, finché non si modifica Itemp.

Quando si modifica Itemp matlab copierà binaryImage in Itemp e quindi lo modificherà.

Ho fatto alcuni test interessanti durante un viaggio. Se lo fai:

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

solo una copia è conservata in memoria. Se si modificano A

A(1)=1; 

Poi, MATLAB fare uno nuova copia della matrice per la nuova A, e le variabili B, C, D, E ancora puntare alla matrice del vecchio A.

+0

questa è la risposta che mi serve grazie;) –

Problemi correlati