ANSYS计算结果如何进行傅里叶变换FFT

ANSYS计算结果如何进行傅里叶变换FFT

Please Share Us

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

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

FFT称为快速傅立叶变换(Fast Fourier Transformation),是时域-频率变换分析方法之一。FFT的理论要想完全弄清楚需要花一点时间,本文不再详细说明,如果有同学需要了解FFT,大家可去知乎搜索话题傅里叶变换,看里面的精华文章,看完后会对FFT有一个非常清晰的认识,有兴趣的同学可去知乎搜下。

ANSYS计算结果如何进行傅里叶变化FFT-min

我们如果要做时域和频域的转换,一般是利用第三方软件来做,也即将ANSYS的计算结果导出,然后在导入到三方软件中处理,这里的三方软件一般可用matlab或者orgin,甚至Python也是可以的,然而单从数据处理这块来讲,导入导出的操作稍显麻烦,其实在ANSYS的数据工具箱中也是提供了傅里叶变换的函数 *FFT,水哥今日就详细介绍下这个函数,方便大家使用。

*FFT的帮助如下:

ANSYS计算结果如何进行傅里叶变化FFT2-min

该命令有如下参数,下面分别说明:

Type: 确定变化类型,分为正变换和逆变换

InputData:输入的要进行FFT变换的向量或者矩阵,其中矩阵需要为用*DMAT命令创建的稠密矩阵,向量为*VEC创建的向量。输入数据可以是实序列,也可为复序列。

OutputData:FFT变换后保存的矩阵或向量名,其数据类型与输入数据一致,并且必须在*FFT之前定义。在复域,无论正变换或逆变换,输入数据和输出数据均为复序列。在实域,正变换输入实序列,而输出则为复序列;逆变换输入复序列,输出为实序列。

DM1:向量项数或矩阵行数,缺省为输入向量项数或输入矩阵的行数。

DM2:矩阵列数,缺省为输入矩阵的列数。

ResultFormat:结果格式,FULL—保存全部结果,由DM1和DM2确定(当然可采用缺省值);PART—保存部分结果(仅对实序列),对输入的实序列,FFT结果的实数部分对称而虚部共轭,如此可节省计算时间和储存空间。

这里水哥便以我们的老朋友EL-Centro N-S波的为例,来进行*FFT的操作演示,当然实际中同学们可直接以ANSYS求解完后提取的数据作为输入数据处理。

EL-CENTRO-NS地震波如下:

ANSYS计算结果如何进行傅里叶变化FFT3-min

第一步:读取El-Centro波,指定采样频率及采样点数

finish
/clear
/post26
!数据点数
NN=2688
!采样间隔
DT=0.02
*Create,dataread,mac
*DIM,Elcentro,array,NN
*Vread,Elcentro(1,1),Elcentro,txt,,jik,1,NN
(F10.5)
*End
dataread

第二步:将变量导入到APDL数学工具箱中,并进行傅里叶变换

!导入APDLMATH箱,进行FFT正变换
*VEC,EL_Input,D,IMPORT,APDL,Elcentro
!定义输出数据
*VEC,EL_Output,Z,ALLOC,NN
!进行FFT变换
*FFT,Forw,EL_Input,EL_output,,,FULL

第三步:获取输出复数向量的实部和虚部,进行幅值计算

!输出实部和虚部
!获取输出数据的实部和虚部结果
*VEC,EL_Output_R,D,COPY,EL_output,REAL
*VEC,EL_Output_I,D,COPY,EL_output,IMAG
!获取向量的维度
size=EL_Output_R_ROWDIM/2
size=nint(size)
!计算输出结果的幅值
*VEC,EL_Output_DISP,D,ALLOC,size
*do,i,1,size
IR=EL_Output_R(i)
II=EL_Output_I(i)
EL_Output_DISP(i)=SQRT(IR**2+II**2)
*enddo

第四步:对幅值进行调幅,这点大家要注意了,APDL默认的FFT是没有经过调幅处理的,这样绘制出来的幅值远远大于时域的幅值,这点是不合实际的。

!调幅处理
EL_Output_DISP(1)=EL_Output_DISP(1)/NN
EL_Output_DISP(size)=EL_Output_DISP(1)/NN
*do,i,2,size-1
EL_Output_DISP(i)=EL_Output_DISP(i)/NN*2
*enddo

第五步:绘制幅值-频率图

!绘制幅-频图
*EXPORT,EL_Output_DISP,APDL,EL_Output_AMP
*dim,EL_AMP,table,NN/2
*dim,EL_Pha,table,NN/2
*dim,EL_Pha2,,NN/2
*do,i,1,NN/2
EL_AMP(i)=EL_Output_AMP(i)
EL_Pha2(i)=(i-1)/NN/DT
EL_Pha(i)=EL_Pha2(i)
*enddo

/show,png
/AXLAB,X,Frequency
/AXLAB,Y,Amplitude
*vplot,EL_Pha,EL_AMP
/show,close

第六步:查看与对比

在ANSYS工作目录下,找到生成的频率-幅值图,如下所示:

ANSYS计算结果如何进行傅里叶变化FFT4-min

为了对比上述操作的准确性,水哥分别采用了Matlab和Orginlab这两种常见的数据处理软件对相同的地震波进行了FFT,截图如下所示:

Matlab:

ANSYS计算结果如何进行傅里叶变化FFT5-min

OrginLab:

ANSYS计算结果如何进行傅里叶变化FFT6-min

从上面对比可见,三者形状和幅值基本一致。

另外值得说明的是,在matlab和orginlab中窗函数均采用的默认矩形窗函数,如果选用其他的,幅值会有一定的影响,也即从侧面说明APDL中FFT采用的默认窗函数为矩形窗函数,且没有提供可更改的窗口,如果有同学需要用其他窗函数,水哥建议还是用三方软件做吧。

本文所提及的地震波源数据,APDL代码及对应的Matlab FFT代码,付费即可下载。

PS:水哥给大家送福利了,有需要特价电影票,星巴克咖啡,肯德基外卖等优惠卷的同学,可点击下方小程序进入购买,单单有优惠,水哥亲测,已经看了灌篮高手啦,首单能便宜七八块呢~

详情点击下方文章了解:

电影票、外卖、奶茶、话费 | 薅羊毛必不可少

欢迎关注本站微信公众号

图片[7]-ANSYS计算结果如何进行傅里叶变换FFT-峰设教育

源代码下载:

 

欢迎扫描如下二维码关注本站微信公众号:ANSYS结构院

有时间麻烦帮忙点击下公众号文末的广告哦, 权当码字的辛苦费,感谢大家!

Please Share Us
ANSYS计算结果如何进行傅里叶变换FFT-峰设教育
ANSYS计算结果如何进行傅里叶变换FFT
此内容为付费阅读,请付费后查看
15积分
付费阅读
已售 9
© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码

    暂无评论内容

YOU MAY LIKE…