前言
txt文件存储三维坐标点,通过txt文件导入数据并绘制归一化的三维图。
一、txt数据导入
我的txt文件格式如下图:(部分截图,txt文件为直接从其他软件导出的)
- 第一个数据为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/单位');
以下为结果图