APDL如何读取EXCEL文件

APDL如何读取EXCEL文件

点击此处查看 ✿水哥原创ANSYS视频教程清单 ✿

水哥专属答疑服务已开通,点此此处查看详情

APDL中,我们常用*Vread命令读取数据文件,使用该命令时,后续要紧跟数据读取的格式,随着数据内容的不同,格式可能也不一样,这导致命令的可移植性较差,同时对数据文件的生成要求也比较多,通常需要用matlab或者Python重新清理格式。

本文介绍APDL读取EXCEL文件的方法,由于EXCEL编辑性较强,且采用本文方法对数据格式无要求,从某种程度来讲,可让大家摆脱对格式的烦恼!

读取EXCEL的主要命令为*TREAD,该命令的主要作用是从外部文件读取数据并转为一个Table数据,注意不是普通的Array,大家可理解为转为一个表格数组,而不是我们常见的数值数组。

其帮助如下:

APDL如何读取EXCEL文件

该命令只需要四个参数,表格数组的名称,读取数据的名称、后缀名,以及开始读取时忽略的行数。

下面以这样一个文件来演示基本操作方法。

已知有一个excel文件,名为myplot.xls, 其内容如下所示,总计三列,分别为Time,X,Y, 共约300行,具体行数不详,现在需要将数据读入APDL中以方便加载。

APDL如何读取EXCEL文件2

第一步,首先将EXCEL文件另存为CSV文件,这里同学们可能会问为什么要这么做,主要原因在于EXCEL为二进制文件,主要运用于Office或者WPS,而CSV则为纯文本文件,适用于任何文本软件。

第二步,定义一个Table数组,定义之前,首先要知道数据的维度,这里如果用户不想手动去查看数据的维度,可以采用/INQUIRE这个命令来查询文件数据的行数.

代码如下:

/INQUIRE,NumL,Lines,myplot,csv

运行上述命令后,查看变量NumL的值,并与原数据进行对比,吻合!

APDL如何读取EXCEL文件3

定义数组:

*DIM,mytable,Table,NumL-1,2,1

这里说下数组维度的确认方法,由于第一行数据为标识符,也即Time,X,Y,故要在总行数的基础上减去1;另外,在读取数据存为table时,默认数据的第一行为Column的索引值,第一列为Row的索引值,且两者都需要升序,我们实际上只需要XY的数据,故而存储数据的列数为2,同时还需要手动增加一行索引值(随便定义,保证升序即可),故而csv的数据需要做如下修改。

APDL如何读取EXCEL文件4

第三步,读取CSV文件内容

代码如下:

*Tread,mytable,myplot,csv,,1

这里的1表示第一行不读取,直接从第二行开始读取,读取成功后,打开table的数据显示,如下所示:

APDL如何读取EXCEL文件5

从这里可见,数据已被完整的读取进来。

为测试数据格式问题,我们这里新增加一列,并用科学计数法表示,如下所示:

APDL如何读取EXCEL文件6

 

修改后的命令流如下所示:

/INQUIRE,NumL,Lines,myplot,csv

*DIM,mytable,Table,NumL-1,3,1

*Tread,mytable,myplot,csv,,1

APDL如何读取EXCEL文件7

从图中可见,虽然源数据格式不同,但依然能被读取,简单快捷!

四、数据引用

虽然上述操作将数据读取了,但由于是表数组,其引用是直接根据索引值来插值计算,而不是简单的通过行数、列数值来引用,非常不方便,所以我们还需要将其转为普通数组方便我们平时的操作。

这里就需要另外一个APDL命令,*VFUN,该命令的作用为变量运算,其中有一个copy,非常适合我们这里的操作。

命令流如下,注意表数组不能从0开始,否则索引值会被写进去:

*dim,myarray,array,NUML,3

*Vfun,myarray(1,1),copy,mytable(1,1)

*Vfun,myarray(1,2),copy,mytable(1,2)

*Vfun,myarray(1,3),copy,mytable(1,3)

通过上述操作,我们就将一个表数组转为了数值型数组,从而可通过元素的行列数来具体调用。

如进行变量的赋值,并与原数据进行比对:

aa=myarray(5,2)

*status,aa

APDL如何读取EXCEL文件8

通过上述操作,即可完美实现从EXCEL数据到APDL,并且再也不用担心格式问题了,稳!

全篇的命令如下:

/INQUIRE,NumL,Lines,myplot,csv
*DIM,mytable,Table,NumL-1,3,1
*Tread,mytable,myplot,csv,,1
*dim,myarray,array,NUML,3
*Vfun,myarray(1,1),copy,mytable(1,1)
*Vfun,myarray(1,2),copy,mytable(1,2)
*Vfun,myarray(1,3),copy,mytable(1,3)
aa=myarray(5,2)
*status,aa

另外附上采用table数据来进行的绘图:

*vplot,mytable(1,1),mytable(1,2)

APDL如何读取EXCEL文件9

 

 

 

欢迎搜索关注本站微信公众号:ANSYS结构院

欢迎给网站捐助,您的捐助是我坚持下去的动力!

© 版权声明
THE END
喜欢就支持一下吧
点赞1赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码

    暂无评论内容