Матрицы Matlab передаются по значению или по ссылке? - PullRequest
8 голосов
/ 25 февраля 2012

Я новичок в Matlab. Вы можете посчитать этот вопрос глупым, но мне действительно интересно, является ли приведенный ниже оператор операцией передачи по значению или операцией передачи по ссылке.

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

Является ли Itemp новой матрицей, значения которой копируются из binaryImage, или это просто указатель на binaryImage?

Ответы [ 2 ]

13 голосов
/ 25 февраля 2012

Он передается по ссылке, пока вы не измените Itemp.

Когда вы измените Itemp, Matlab скопирует binaryImage в Itemp и затем изменит его.некоторые интересные тесты некоторое время идут.Если вы сделаете:

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

, то в памяти останется только одна копия.Если вы измените A

A(1)=1;

Затем Matlab создаст одну новую копию матрицы для нового A и переменные B, C, D, E все еще указывают на матрицу старого A.

12 голосов
/ 25 февраля 2012

Matlab использует копирование при записи стратегия

...