Matlab绘制三维表面模型说明
首先将excel表中的数据加载到matlab中
有两种较为简单的方法(可以直接读取excel,但是你只是要图的话没必要这么复杂,所以就不提这一种了,只说两种简单的方法)
①在matlab主页点击导入数据→选择你的数据文件→选中要用的数据,将数据类型改成数值矩阵,矩阵名称改为pointTab→点击导入所选内容,完成数据加载,此时在工作区可以看见我们导入的数据。
②打开excel表,选中需要导入的数据,复制→在matlab的工作区新建一个数值矩阵,命名为pointTab→双击打开这个矩阵,在变量区域粘贴刚才复制的数据即可。
然后进行数据预处理
分析这个数据发现平面坐标是规则的,如下图所示:
既然是规则的,那就好办了,不需要插值等一系列操作,直接把数据整理成符合mesh函数需要的格式即可。(mesh函数需要的数据是三个等大的矩阵,三个矩阵分别对应存储三维坐标X、Y、Z)
发现平面坐标的步长为25,则对应矩阵的行列计算如下:
x = pointTab(:,1)/25+1;
y = pointTab(:,2)/25+1;
即坐标值除以25再加一就是当前三维坐标分别在自己矩阵中对应的行列号,计算出行列号并将值存储进去即可,代码如下:
[r,~] = size(x);
for i = 1:1:r
row = x(i);
col = y(i);
X(row,col) = pointTab(i,1);
Y(row,col) = pointTab(i,2);
Z(row,col) = pointTab(i,3);
end
绘制表面模型
代码如下:
surf(X,Y,Z);
后续优化操作可以在代码里简单写写,也可以在图形界面交互操作,不在赘述。效果图如下:
另附完整代码如下:
%{本实例用于将一组简单三维离散点构建曲面模型并显示导入数据为n个点的三维坐标(n行3列的数值矩阵pointTab)显示成果为该导入数据经过整理生成的三维曲面模型by Mr.Chai%}rowTab = pointTab(:,1)/25+1; % 将x坐标换算成矩阵的行comTab = pointTab(:,2)/25+1; % 将y坐标换算成矩阵的列[r,~] = size(pointTab); % 获取pointTab中点的个数for i = 1:1:r row = rowTab(i); % 当前点对应的矩阵行号 col = comTab(i); % 当前点对应的矩阵列号 X(row,col) = pointTab(i,1); % 将当前点的x坐标写入X矩阵的row行,col列处 Y(row,col) = pointTab(i,2); % 将当前点的y坐标写入Y矩阵的row行,col列处 Z(row,col) = pointTab(i,3); % 将当前点的z坐标写入Z矩阵的row行,col列处end%绘制曲面figure(1); % 新建一个图层surf(X,Y,Z); % 绘制曲面模型shading interp; % 去除表面模型的黑框线colormap(jet); % 假彩色渲染colorbar; % 显示色度条msgbox '恭喜你,你的代码运行完毕!';