2010-08-06 4 views
13

A는 그레이 스케일 이미지에 해당하는 4 개의 매우 큰 행렬이있는 구조체를 가지고 있습니다. 내 함수의 입력에 따라 변수에 4 개의 행렬 중 하나를 저장하려고합니다. 그러나, 그 매트릭스가 매우 크기 때문에, 나는 그것들의 복사본을 만들고 싶지 않습니다.Matlab에서 행렬에 대한 참조를 얻을 수 있습니까?

Matlab과 비슷한 개념이 C++의 참조 개념입니까? 또는 다른 말로하면 : 동일한 행렬을 가리키는 두 개의 변수를 가질 수 있습니까?

답변

18

Matlab은 변수에 "lazy copy on write"을 사용합니다. 즉, 배열 (또는 모두)을 함수에 전달하면 배열에 쓰지 않으면 중복되지 않습니다. 즉, 당신이하고 싶은 일을 할 필요가 없을 수도 있습니다.

예를 들어, imgStruct 구조로 이미지를 저장하고 firstImage에서 fourthImage까지 입력하면 imgStruct.fourthImage을 함수의 입력으로 사용하면 배열이 호출되지 않아도 배열은 복제되지 않습니다. 함수 안에 inputImage.

이미지에 쓸 계획 인 경우 참조로 전달되는 이미지 데이터를 저장하기 위해 handle class을 만들 수 있습니다 (따라서, 함수 내부의 이미지를 수정하면 기본 작업 영역에서도 수정 됨) .

+6

장면 뒤에서 일어나는 일 (copy-on-write)에 대한 자세한 예제는 다음 게시물을 참조하십시오. http://stackoverflow.com/questions/1735841/initializing-a-ublas-vector-from-ac- 배열/1735997 # 1735997 – Amro

관련 문제