У меня есть двоичная сегментация твердого объекта в массиве Matlab 3D, которая называется mask
(1000x1000x1000 uint16
).Мне нужно извлечь верхнюю поверхность, т. Е. Первый ненулевой элемент для каждого вектора столбца (по второму и третьему измерениям).Я могу сделать это с помощью следующего фрагмента кода:
s = zeros(1000,1000);
for y=1:1000
for x=1:1000
s(x,y) = find(mask(:,x,y),1);
end
end
Есть ли способ векторизовать код и избежать циклов for
?