Конвхалл в Matlab

У меня есть 3 вектора данных о положении: x, y и z

x = [0.1524 0.1219 0.0610 0.0914 0.0610 0.1219 0.0305 0.0914 0.2134 0.0610 0.1219
0.0305 0.0610 0.1219 0.0914 0.1524 0.0610 0.1524 0.0610 0.0610 0.0610 0.0610
0.1524 0.0914 0.0610 0.1524 0.0610 0.2134 0.0610 0.0914 0.1524];

y = [0.1219 0.1524 0.0305 0.1219 0.1524 0.1524 0.0610 0.1219 0.1219 0.1524 0.1524
0.0610 0.0914 0.1524 0.1829 0.1829 0.0914 0.1829 0.2134 0.0914 0.2134 0.0914
0.1829 0.0610 0.0914 0.1829 0.0914 0.1829 0.2134 0.1219 0.1829];

z = [0.0305 0.0305 0.0610 0.0610 0.0610 0.0610 0.0914 0.0914 0.0914 0.0914 0.0914
0.1219 0.1219 0.1219 0.1219 0.1219 0.1524 0.1524 0.1524 0.1829 0.1829 0.2134
0.2134 0.2438 0.2438 0.2438 0.2743 0.2743 0.2743 0.3048 0.3048];

Мне было интересно, как я могу применить выпуклую оболочку к этому набору? Matlab не принимает этот формат, но сетку с регулярными интервалами.


person user1641496    schedule 06.11.2012    source источник


Ответы (1)


Вы можете использовать convhulln для вычисления выпуклой оболочки для размеров более 2. Если вы хотите отобразить результаты, используйте trisurf. См. пример кода для вашего ввода ниже:

X = [x;y;z]'; %# involves a 3D point on each row  
K = convhulln(X);
trisurf(K,X(:,1),X(:,2),X(:,3))

введите здесь описание изображения

person petrichor    schedule 06.11.2012
comment
Действительно большое спасибо. Я могу показаться глупым, но есть ли способ узнать, сколько отверстий в этой форме? Я имею в виду, глядя на пример Matlab для 2D, точки в форме сердца представлены объектом в форме ромба после использования convhull. Так можно было бы найти долю сердечных клеток (узлов) в общей площади выпуклой оболочки или в 3D в общем объеме? - person user1641496; 06.11.2012
comment
Лучше задать это отдельным вопросом. - person petrichor; 06.11.2012