使用MATLAB对三维坐标绘制isosurface

img

img

img

img

  1. 我想咨询一下我按照文献语法来做的(前边两个照片是文献里边的,后边两个照片是我按照文献来做的),为什么我的等值面不是连一起的呢

仅凭这张命令行的代码片,看不出你的小x,小y,小z分别取值是多少,盲猜for循环里换成X,Y,Z试了下可以构建一个等值面:

clc,clear,close all;
[X, Y, Z] = meshgrid(0:31,0:31,0:31);
[rows, cols, heis] = size(X);
V = zeros(rows,cols,heis);
for i = 1:30
    x_t = round(X(i)) + 1;
    y_t = round(Y(i)) +1;
    z_t = round(Z(i))+1;
    V(x_t,y_t,z_t) = 1;
end
[face, vertice] = isosurface(X,Y,Z,V,0.5);
P = patch('Faces',face,'Vertices',vertice);
axis equal;
view(3)

img


应该还是绘图时用到的数据不对,[faces,verts] = isosurface(___) 在单独的数组中返回面和顶点,所以请再检查一下之前的变量赋值是否都是你想要的。

估计你只是给了一条直线上的点,试试多建立空间上的点。