2012-02-25 10 views
7

Jestem nowy w Matlab. Możesz znaleźć to pytanie głupio, ale naprawdę zastanawiam się, czy poniższe stwierdzenie jest operacją typu "przekaż wartość" lub "przekaż referencję".Czy Matlab Matrices są przesyłane według wartości nominalnej lub przekazywać według referencji?

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

Czy Itemp jest nowa matryca, których wartości są kopiowane z binaryImage, czy jest to tylko wskaźnik do binaryImage?

+2

dlaczego jesteś zaniepokojony wewnętrznych Matlab? Z punktu widzenia programisty jest to kopia tablicy. Wewnętrznie jest to zapewne obiekt liczony referencyjnie, który utworzy kopię, jeśli ją zmodyfikujesz. – QuentinUK

Odpowiedz

12

Przechodzi przez odniesienie, dopóki nie zmodyfikujesz Itemp.

Po zmodyfikowaniu Itemp MATLAB skopiuje binaryImage do Itemp, a następnie zmodyfikuje.

Zrobiłem kilka interesujących testów na pewien czas. Jeśli zrobić:

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

tylko jedna kopia jest przechowywana w pamięci. Jeśli zmodyfikujesz A

A(1)=1; 

Następnie Matlab uczynić jeden nowej kopii matrycy dla nowej A, a zmienne B, C, D, E nadal wskazują na matrycy starej A.

+0

to jest odpowiedź, której potrzebuję dzięki;) –

Powiązane problemy