Передают ли значения, переданные в функцию, вне функции в Matlab - PullRequest
1 голос
/ 09 марта 2011

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

например

function R = addOne (value, value2)
   value2 = value2 + 1;
   R = value + 1;
end

Например, если я вызову функцию выше, только значение + 1 будет возвращено в качестве возврата. Если я получу доступ к переменной, которую передал в качестве value2, она тоже увеличится?

Я спрашиваю об этом, потому что blockproc позволяет возвращать только 1 матрицу, но мне нужно будет изменить две матрицы.

1 Ответ

2 голосов
/ 09 марта 2011

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

Чтобы решить вашу проблему, вы можете объединить два выхода в третьем измерении, чтобы первая плоскостьвыходного сигнала out(:,:,1) соответствует первой факторной матрице, а вторая плоскость выходного сигнала out(:,:,2) соответствует второй факторной матрице.

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