MATLAB-txt数据绘制三维图


文章目录

  • 前言
  • 一、txt数据导入
  • 二、画图


前言

txt文件存储三维坐标点,通过txt文件导入数据并绘制归一化的三维图。


一、txt数据导入

我的txt文件格式如下图:(部分截图,txt文件为直接从其他软件导出的)
MATLAB-txt数据绘制三维图_第1张图片

  • 第一个数据为Y\X,代表第一列数据为坐标点的y坐标,第一行为坐标点的x坐标,其余行列为对应了某Y某X的值(相当于z坐标)。
  • 直接读取此txt文件会报错,因为第一个数据不是数字类型,这里可以直接将txt文件的第一个数据改成“100”,当然也可以在MATLAB中直接实现诸如判定是否为数组类型,然后再读取,这里我直接改更简单。
  • 总而言之,现在txt文件中全为数字类型的数据了。可以读取txt数据了。

以下为参考代码:

clear;
file1 = load('XXXX.txt');  % 写你自己文件的路径就行

y = file1(:,1); % y坐标为数据第一列,第一个数据是100,取代了之前的字符y/x
x = file1(1,:); % x坐标为数据第一行
% 但是txt中第一个数据使我们不要的,so->去掉它
m = size(y);  
% 得到数据的大小,我这里是301*1,因为我的数据中x和y的数组大小一样,所以没有读取x的
y1 = y(2:m(1))';  % 去掉第一个数据,并且转置一下,从一列变成一行
x1 = x(2:m(1));
% 读取所有的z坐标值,相当于txt数据中的第2行到最后一行和第2列到最后一列的所有数据
z = file1(2:m(1),2:m(1));  
% 得到最大的z值,然后让所有的z除以这个最大值进行归一化
zmax = max(z,[],"all")
z1 = z./zmax;
  • 目前,我们得到了x、y、z的所有坐标以及归一化后的坐标。

二、画图

以下为参考代码

mesh(x1,y1,z1); % 画图
colorbar; % 图例
title('XX归一化分布'); % 题目
xlabel('x/mm');ylabel('y/mm');zlabel('XX/单位'); % 坐标轴

subplot(1,2,1);
plot(x1,z1(:,fix(m(1)/2)));
title('x方向截面XX曲线');xlabel('x/mm');ylabel('XX/单位');
subplot(1,2,2);
plot(y1,z1(fix(m(1)/2),:));
title('y方向截面XX曲线');xlabel('y/mm');ylabel('XX/单位');

以下为结果图
MATLAB-txt数据绘制三维图_第2张图片
MATLAB-txt数据绘制三维图_第3张图片

你可能感兴趣的:(MATLAB学习,matlab)