Можно ли получить ссылку на матрицу в Matlab? - PullRequest
13 голосов
/ 06 августа 2010

A имеет структуру с четырьмя очень большими матрицами, которые соответствуют изображениям в градациях серого.В зависимости от ввода моей функции, я хочу сохранить одну из этих четырех матриц в переменной.Однако, поскольку эти матрицы очень большие, я не хочу создавать их копии.

Есть ли в Matlab что-то похожее на концепцию ссылок в C ++?Или другими словами: возможно ли иметь две переменные, указывающие на одну и ту же матрицу?

1 Ответ

19 голосов
/ 07 августа 2010

Matlab использует "ленивая копия при записи" для переменных. Это означает, что если вы передадите свой массив (или все они) своей функции, они не будут дублироваться, пока вы не запишите в массив (ы). Другими словами, вам может не понадобиться делать то, что вы хотите.

Например, если вы храните ваши изображения в структуре imgStruct с полями firstImage до fourthImage, и вы передаете, например, imgStruct.fourthImage в качестве входных данных для функции массив не дублируется, даже если он вызывается, например, inputImage внутри функции.

Если вы планируете писать в изображение, вы можете создать класс дескриптора для хранения данных вашего изображения, которые передаются по ссылке (таким образом, если вы измените изображение внутри функции, изменено в базовом рабочем пространстве).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...