Упростите повторяющиеся измерения в MATLAB - PullRequest
3 голосов
/ 28 февраля 2012

В настоящее время я работаю над функцией усреднения изображений в MATLAB . Но я чувствую, что следующие строки могут быть намного проще, только я не знаю как.

    centroidImage(:,:,1) = double(centroidImage(:,:,1)) ./ alphaImage;
    centroidImage(:,:,2) = double(centroidImage(:,:,2)) ./ alphaImage;
    centroidImage(:,:,3) = double(centroidImage(:,:,3)) ./ alphaImage;

Я получаю ошибку, если я напишу это как:

    centroidImage = double(centroidImage) ./ alphaImage;

Поскольку размеры не совпадают (alphaImage равно [y x], а centroidImage равно [y x 3]). Нет ли более простого и эффективного способа перебора измерений переменной centroidImage без явного указания их всех по одному?

Ответы [ 2 ]

4 голосов
/ 28 февраля 2012

Вы можете использовать bsxfun для этого:

centroidImage = bsxfun(@rdivide,centroidImage,alphaImage);
1 голос
/ 28 февраля 2012

Вы также можете использовать repmat на alphaImage:

centroidImage = double(centroidImage) ./ repmat(alphaImage,[1 1 3]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...