前言
对于(坐标,物理量)这类数据的可视化(云图)一直在探索,二维数据选择用matlab处理,因为matlab的imagesc函数可以根据数据值的大小用不同颜色来显示。但是对应的三维数据(x,y,z,物理量)的数据处理一直没找到合适的方式。多次搜索发现tecplot可以做,但是都没有详细的步骤,因此写这篇博文详细展示一下导入的过程。物理量可以多个,在添加变量处多添加就行。
准备工作
将数据存入Excel,按照x坐标、y坐标、z坐标、物理量排成四列,我使用的是Tecplot 360 EX2016 r2(为啥不更新?因为其他版本总是有问题,这个版本最听话……)
步骤如下:
1.导入data.xls(可能需要点两次导入)
2.选择 自定义
3.选择 custom模式
4.添加变量:包括 x,y,z,物理量
在add new variable栏写变量名,再选择数据类型,点击添加,就能成功添加一个变量
5.添加zone 定义数据范围(例如我导入的是Excel中从A1-D8000的数据),IMAX含义为网格数。
6.点击完成
这样就能在tecplot处理数据了,具体的细节就是tecplot操作的问题,这里不再赘述。
另一种更便捷的方法
将数据导出成dat格式,并在前面增加说明,Tecplot就可以直接读取了。MATLAB导出代码如下:
filename=['address' num2str(l/Nout) '.dat'];
% address是储存位置,这里的num2str是为了在循环输出dat数据文件中使用,如果只有一个文件可以忽略
fid=fopen(filename,'wt');
fprintf(fid,'%s \n','variables= "x", "y", "z", "variable name"');
fprintf(fid,'%s \n','zone t="Frame " i=50,j=50,k=50,f=point');
%这里的ijk是三维方向xyz划分量
[m,n]=size(data);%data就是包含x,y,z和变量的数据矩阵
for i=1:1:m
for j=1:1:n
if j==n
fprintf(fid,'%g\n',data(i,j));
else
fprintf(fid,'%g\t',data(i,j));
end
end
end
fclose(fid);