У меня есть маска с областями, помеченными цифрами 1, 2 и 3. У меня есть трехмерный объем, который я хотел бы рассчитать, среднее значение пикселей соответствует этим областям.

Я хочу рассчитать среднее значение регионов с номером 1, номером 2 и номером 3 отдельно.

Правильно ли следующее?

m = среднее (объем (маска == 1));

m = среднее (объем (маска == 2));

m = среднее (объем (маска == 3));

ПРИМЕЧАНИЕ. 

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech ,ME,M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

Это требует совсем другого подхода. Вам нужно использовать одну из агрегирующих функций splitapply, accumarray или groupsummary. Предполагая, что ваша маска - это не маска, а изображение метки с целочисленными значениями от 0 до N:

objectsmean = accumarray(double(mask(:))+1, yourimage(:), [], @mean);
%or
objectsmean = splitapply(@mean, yourimage(:), double(mask(:))+1);
%or
objectsmean = groupsummary(yourimage(:), mask, 'mean');

accumarray, вероятно, самый быстрый. Двойной (..) здесь, если ваша маска хранится как целочисленный тип, а количество объектов равно intmax (класс (маска)), что приведет к переполнению при добавлении 1.

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ