利用Tecplot导入MATLAB计算结果数据进行三维可视化

前言

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

准备工作

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

步骤如下:

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

2.选择 自定义

利用Tecplot导入MATLAB计算结果数据进行三维可视化_第1张图片

3.选择 custom模式

利用Tecplot导入MATLAB计算结果数据进行三维可视化_第2张图片

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

在add new variable栏写变量名,再选择数据类型,点击添加,就能成功添加一个变量
利用Tecplot导入MATLAB计算结果数据进行三维可视化_第3张图片

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

利用Tecplot导入MATLAB计算结果数据进行三维可视化_第4张图片

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

你可能感兴趣的:(记录)