2012-02-25 36 views
7

Tôi mới ở Matlab. Bạn có thể tìm thấy câu hỏi này ngớ ngẩn nhưng tôi thực sự tự hỏi nếu tuyên bố dưới đây là một hoạt động vượt qua bởi giá trị hoặc hoạt động qua-tham chiếu.Matlab Matric có được chuyển giao theo giá trị hoặc thông qua tham chiếu không?

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

Liệu các Itemp là một ma trận mới có giá trị được sao chép từ binaryImage, hay nó chỉ là một con trỏ đến binaryImage?

+2

Tại sao bạn lo lắng về nội bộ của Matlab? Từ quan điểm của lập trình viên, nó là một bản sao của mảng. Bên trong nó có lẽ là một đối tượng được tính tham chiếu sẽ tạo một bản sao nếu bạn sửa đổi nó. – QuentinUK

Trả lời

12

Nó chuyển qua tham chiếu, cho đến khi bạn sửa đổi Itemp.

Khi bạn sửa đổi Itemp MATLAB sẽ sao chép binaryImage thành Itemp và sau đó sửa đổi.

Tôi đã thực hiện một số thử nghiệm thú vị trong khi đang di chuyển. Nếu bạn làm:

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

chỉ một bản sao được lưu trong bộ nhớ. Nếu bạn sửa đổi A

A(1)=1; 

Sau đó, matlab làm một bản sao mới của ma trận cho cái mới A, và các biến B, C, D, E vẫn trỏ đến ma trận của cái cũ A.

+0

đó là câu trả lời tôi cần cảm ơn;) –

Các vấn đề liên quan