matlab三维矩阵_Matlab绘制三维表面模型说明

  • Post author:
  • Post category:其他



Matlab绘制三维表面模型说明

首先将excel表中的数据加载到matlab中

有两种较为简单的方法(可以直接读取excel,但是你只是要图的话没必要这么复杂,所以就不提这一种了,只说两种简单的方法)

①在matlab主页点击导入数据→选择你的数据文件→选中要用的数据,将数据类型改成数值矩阵,矩阵名称改为pointTab→点击导入所选内容,完成数据加载,此时在工作区可以看见我们导入的数据。

4b9ae5e007a1313a16913c38007b836e.png

7bd59ff790636203119fc918ef6f3682.png

7108d51d8e807dadb0480e2025869c40.png

2cb629132b16c39e5cbd186e3dbb5212.png

②打开excel表,选中需要导入的数据,复制→在matlab的工作区新建一个数值矩阵,命名为pointTab→双击打开这个矩阵,在变量区域粘贴刚才复制的数据即可。

cbf6ac649031dff3c6549d777fc3502e.png

8a75cacacc0aa9e2f93712b3cb4c995f.png

然后进行数据预处理

分析这个数据发现平面坐标是规则的,如下图所示:

01ab34c5082e2b31ccd21d3748e69be4.png

既然是规则的,那就好办了,不需要插值等一系列操作,直接把数据整理成符合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);

后续优化操作可以在代码里简单写写,也可以在图形界面交互操作,不在赘述。效果图如下:

7c8413ac1c6a36adc1309cea42ca6b8a.png


另附完整代码如下:


%{本实例用于将一组简单三维离散点构建曲面模型并显示导入数据为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 '恭喜你,你的代码运行完毕!';



版权声明:本文为weixin_33711795原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。