前言

对于(坐标,物理量)这类数据的可视化(云图)一直在探索,二维数据选择用matlab处理,因为matlab的imagesc函数可以根据数据值的大小用不同颜色来显示。但是对应的三维数据(x,y,z,物理量)的数据处理一直没找到合适的方式。多次搜索发现tecplot可以做,但是都没有详细的步骤,因此写这篇博文详细展示一下导入的过程。物理量可以多个,在添加变量处多添加就行。

准备工作

将数据存入Excel,按照x坐标、y坐标、z坐标、物理量排成四列,我使用的是Tecplot 360 EX2016 r2(为啥不更新?因为其他版本总是有问题,这个版本最听话……)

步骤如下:

1.导入data.xls(可能需要点两次导入)

2.选择 自定义

5f71a4e5b3f95637e02e12228c48b485.png

3.选择 custom模式

1efe40097b59be2ec13a20cf03e3fe7e.png

4.添加变量:包括 x,y,z,物理量

在add new variable栏写变量名,再选择数据类型,点击添加,就能成功添加一个变量

c87238d14775c346963238ffe9c2d79f.png

5.添加zone 定义数据范围(例如我导入的是Excel中从A1-D8000的数据),IMAX含义为网格数。

448f996b914f1d1cb1482c862a2a47de.png

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);

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐