首页/文章/ 详情

一文搞懂Matlab时频傅里叶转换

1月前浏览2776

众所周知,振动中会用到响应谱,响应谱分析的主要用途是代替瞬态动力学的时程分析,如下图,将一个复杂的复杂的时域信号使用拟合的方法,分离成众多的谐波信号,即正弦或余弦信号,由于频谱图省略了各谐波的相位信息,只记录它们的频率与幅值,所以是近似且快速的计算手段。这个内容在教主的动力学课程中说得很详细了。

严格意义上,响应谱分析中的边界条件是一种响应,因为输出的反应谱是位移(速度、加速度或力)与频率之间的关系,这种关系称为频谱。

1 时频转换的必要性

很多教程说响应谱不需要工程师自己生成,可以直接查询相关标准。在一些标准试验中的确是这样,比如舰船的海浪冲击可以直接查询GJB150相应文件、地震对建筑物的冲击可以查询国标或欧标的建筑规范标准。    

但是大多数时候,我们要计算的频谱并不是标准手册上有的,而是根据我们自身产品在冲击或振动试验中测得的。一般使用传感器测试产品某处的时间历程响应,即时间与位移(或速度、加速度)的时域信号。如果是在固定约束处,也可直接使用振动台的时域信号,而无需传感器。将这个时域信号转换为频域信号,导入有限元软件中对产品进行仿真计算。如果振动台控制器自带频谱输出,那么都不需要时频转换了。

工作中,甲方也不会给你配一个人专门进行信号处理,往往甲方自己也不清楚边界或加载情况,更有甚者试验都让仿真者参与设计,所以不要想着有人给你个频谱,你拿进ansys/abaqus中咔咔一顿操作交差完事,这么轻松为啥甲方自己不搞呢。

在有限元教材中不会讲Matlab的时频转换,在Matlab的教材中又不会讲振动,这个最重要的环节似乎被各位大佬故意遗忘了,我们本文中要探讨的正是这个中间被忽略的部分。

2 Matlab快速傅里叶变换

在Matlab中,时频转换是通过快速傅里叶变换FFT完成了,我们不需要详细研究FFT内部转换过程,只需要直接调用就行了,以下结合实例介绍如何转换。

本文使用的是16版本的Matlab,按照Matlab桀骜不驯的性格,每年升级都会悄悄咪 咪地改动几个命令,所以不能保证适用于其他版本的Matlab。

Step1 数据分析    

如图,打开ZXS.csv文件,可以看到这个信号共1s,每个采样数据间隔0.01s,即采样率100。这里一共有100个数据,注意数据的数量必须是偶数个,数据最上方不能有表头,否则需要修改后文的代码。

Step2 Matlab转换。

首先将工作目录设置到ZXS.csv所在的文件夹。

输入如下代码,%之后的文字为注释。

需要注意的是,需要核对输入文件名称ZXS.csv是否与我们保存的数据文件名相同,核对采样率是否正确。

clc;clear all;close all %清理屏幕与缓存

data = xlsread('ZXS.csv'); %19版本读取命令为data = readmatrix('ZXS.csv')    

t = data(:,1);      %对应第一列

y1 = data(:,2);     %对应第二列

figure

y=y1;         % 读取时域数据

Fs=100;     % 采集频率,1秒采集了多少个点(需要自行根据数据更改)

T=1/Fs;       % 采集时间间隔

N=length(y);  % 采集信号的长度

t=(0:1:N-1)*T;   % 定义整个采集时间点

t=t';            % 转置成列向量

% fft变换

Y=fft(y);          % Y为fft变换结果,复数向量

Y=Y(1:N/2+1);      % 只看变换结果的一半即可

A=abs(Y);          % 复数的幅值(模)

f=(0:1:N/2)*Fs/N;  % 生成频率范围

f=f';              % 转置成列向量

% 幅值修正

A_adj=zeros(N/2+1,1);

A_adj(1)=A(1)/N;      % 频率为0的位置

A_adj(end)=A(end)/N;   % 频率为Fs/2的位置

A_adj(2:end-1)=2*A(2:end-1)/N;

%写出数据    

dataa(:,1)=f;               %频率

dataa(:,2)=A_adj;           %幅值

str = ['DXS.csv'];     %写出文件名称

xlswrite(str,dataa);    %19版本为  writematrix(str,dataa)

% 绘制频率幅值图和频谱图

subplot(2,1,1)

plot(t,y,'LineWidth',1)

xlabel('时间')

ylabel('信号值')

title('时域信号')

subplot(2,1,2)

plot(f,A_adj,'LineWidth',3)

xlabel('频率(Hz)')

ylabel('幅值(修正后)')

title('FFT变换幅值图')

输入后,点击上方运行工具,将自动导出转换的频域信号DXS.csv,并生成图像,上面显示的是输入的时域图,下面显示的是输出的频域图。可以看到,这个型号是由三个信号组成,分别是频率=1幅值=5的信号1,频率=8幅值=1的信号2,频率=10幅值=0.5的信号3。    

到输出的DXS.csv文件中,插入散点图能更清晰看到组成。

本文先写到这里,这篇文章写作中我也感觉有一些疑惑,比如输出的信号为啥是三角形,如何调整,也请大佬们不吝赐教。    

来源:CAE中学生
Abaqus瞬态动力学振动建筑MATLAB控制试验ANSYS
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-05-10
最近编辑:1月前
CAE无剑
硕士 | 仿真工程师 CAE中学生
获赞 633粉丝 1387文章 234课程 0
点赞
收藏
作者推荐
Ansys Workbench边界条件——载荷与约束实例详解

本文摘要(由AI生成):本文摘要(由AI生成):文章主要介绍了Mechanical应用在Ansys Workbench中的四种边界条件:惯性载荷、结构载荷、结构约束和热载荷。其中,惯性载荷包括加速度、重力加速度、旋转速度和旋转加速度,结构载荷包括压力、拉力、弯矩和扭矩,结构约束包括固定约束、位移约束和远程位移约束,热载荷包括热流密度和热对流。在施加边界条件时,需要选择正确的施加对象和施加方法,并注意避免应力奇异。Mechanical应用是Ansys Workbench的重要组成部分,可进行力学分析、热分析、电磁分析等。载荷与约束被称为边界条件,只有在正确的设置情况下,才能反映真实的载荷与约束情况。Mechanical中有4种类型的边界条件:惯性载荷、结构载荷、结构约束、热载荷。1 对象选择与施加方法载荷与约束的施加对象通常可以通过两种方式选择:几何模型选择Geometry Selection与**选择 Named Selection。对象选择载荷与约束施加方法有两种:矢量Vector或分量Components。矢量只需给定载荷大小与某一方向,分量需给定某一坐标轴的XYZ三个方向的数值,可以是默认全局坐标,也可以是用户建立的坐标。注意,当选择为矢量时,方向定义与CAD软件相同,即选择平面时,矢量方向垂直于平面;选择圆柱面或圆边时,矢量沿轴线方向;选择边/线时,矢量方向沿边/线;选择两个角点时,矢量沿两点连线方向。施加方法选择2 惯性力Inertial惯性力包括加速度Acceleration、重力加速度Standard Earth Gravity 、旋转速度Rotational Velocit与旋转加速度Rotational Acceleration。在设置时应指定作用几何实体和作用方向。进行惯性力计算的模型必须有材料密度。加速度Acceleration:加速度作用于整个模型上,加速度方向可通过矢量Vector施加,或通过分量Components分别设置XYZ三向加速度。加速度经常用于计算过载,注意由于加速度施加在系统上,惯性将阻碍系统的速度变化,因此惯性力的方向与加速度大小相等,方向相反。重力加速度Standard Earth Gravity :重力作用于整个模型上,作为特殊的加速度,g≈9.81m/s²,方向总是沿着坐标系的某一轴。旋转速度Rotational Velocit,又称角速度,围绕一根轴在给到的速度下旋转,也可通过分量定义XYZ每个方向的角速度。单位可通过勾选Units——RPM修改。旋转加速度Rotational Acceleration,又称角加速度,定义方法同角速度。加速度与重力加速度2 结构载荷Loads2.1压力Pressure压力只能施加在面上,方向通常垂直于面,也可以按分量施加压力。2.2静水压力Hydrostatic Pressure静水压力用于模拟流体对容器的压力,施加静水压力时需要指定流体密度、重力加速度和流体液面位置,下例模拟粮仓受到所贮存粮食的压力。已知粮仓直径2000mm,高度3000mm,粮食密度700kg/m³=7e-7kg/mm³,粮食储存高度2.5米,重力加速度9.8m/s²=9800mm/s²。加载时注意Magnitude的方向应该竖直向上。施加静水压力时,需要选择所有粮仓内表面,设置完成后会在粮仓内表面生成压力示意图,颜色越红表示压力越大,越蓝表示压力越小,液面以上部分(Y>2500)颜色均为深蓝色,表示压力为0。静水压力设置方法计算的应力结果如下2.3力Force力可以施加在点、边、面上。施加在面上的力将均布在所选面上,比如一个力施加在N个相同面积的面上,则每个面所施加的力为总力的1/N。2.4远端力Remote Force远端力是指在点、边、面上施加一个远离集中力的载荷,相当于施加力一个集中力和一个力矩。在细节窗口中需要指定力作用点和大小。远端力轴承载荷示意图2.5轴承载荷Bearing Load在轴与孔接触面上存在法向(径向)压力的作用,轴与孔之间的这个压缩载荷,称之为轴承载荷。轴承载荷施加在圆柱内表面或外表面,其径向分量将根据投影面积来分布压力载荷,无轴向分量。如果孔的圆柱面被分割为多个面,使用轴承载荷边界条件时,需要选择所有面。选择圆柱面2.6螺栓预紧力Bolt Pretension螺栓预紧力可加载在圆轴面、单个体或多个体上,用于模拟螺栓连接。如果加载在一个体上,需要指定一个坐标系,预紧力作用在该坐标系的原点,且方向沿Z轴收缩。螺栓预紧力☆需要注意的是,由于软件计算机制的问题,当施加一个与预紧力平行的拉力,且拉力>预紧力时,软件将不能正确计算,此时可使用力代替预紧力施加在螺栓两端。螺栓预紧力注意事项2.7力矩Moment力矩加载力矩可加载在点、线、面上,施加在面上的力矩,力矩的旋转中心为所选面的几何形心。如下例,固定内孔,将力矩分别加载在不同位置,所计算的变形结果反应了力矩旋转中心。力矩可通过矢量或分量来定义大小,遵守右手螺旋法则。右手螺旋法则判断力矩(扭矩)方向通过分量可以定义沿XYZ方向的力矩。通过分量定义力矩方向☆如何加载偏心力矩:通过修改坐标系的位置(或建立新坐标系)并不能使力矩中心偏离,因为分量只能定义力矩方向,而不能定义力矩中心位置。但是我们在实际工程应用中经常用到偏心力矩,如凸轮、曲轴等。这种偏心力矩可通过joint连接的方法实现。Step1,定义Joint,右击特征树中Model——Inset——Connections,如果特征树中已经有Connections,则可以省略这一操作。右击Connections——Inset——Joint,Connection Type选择Body-Ground,Type选择Revolute,Scope选择外圆柱面。设置连接Step2,设置Joint后,在特征树的Joint下将生成一个新的坐标ReferenceCoordinate System,点击进行设置,Define By改为全局坐标Global Coordinates并分别设置XYZ方向偏移距离。Joint坐标Step3,添加Joint Moment,点击Loads——Joint Load,Joint设置为刚才定义的连接,Type设置为Moment,Magnitude设置力矩大小。偏心力矩2.8线压力Line Pressure线压力以载荷密度的形式在边上施加一个均布载荷,单位为N/mm,方向可以按矢量、分量和切向方式。线压力2.9热条件Thermal Condition热条件可在结构分析或热分析中插入温度边界条件。使用热条件时请先确认模型材料是否已经定义了热膨胀系数。以下以圆环热膨胀计算为例。如图内外圈材料均为默认的合金钢,内圈温度为200℃,外圈为常温,固定外圈的外圆柱面求应力与变形。热膨胀模型编辑材料进入Mechanical,在特征的Model下点击几何体,如下图点击Edit Structural Steel进入材料库。检查是否已定义了热膨胀参数,下图为程序默认的结构钢定义的热膨胀参数,已定义了各向同性热膨胀割线系数Isotropic Secant Coefficient of Thermal Expansion,热膨胀系数Coefficient of Thermal Expansion为1.2×10^-5mm/℃。检查热膨胀系数修改接触类型回到Mechanical中,修改接触关系,点击特征树的Connections——Contacts下的接触对,将接触类型Type的绑定Bonded改为摩擦Frictional,摩擦系数设置为0.2。定义热条件设置边界条件:固定外圈的外圆柱面,对内圈施加热条件。计算结果2.10关节载荷Joint Load使用前需要先建立关节节点,相关内容将在刚体运动学中详解。3 结构约束Supports约束种类约束的本质是限制自由度。自由度是用于描述物理场的响应特性,结构场的自由度包括移动和转动。自由度>0时为运动机构,自由度=0时为静力学平衡机构,自由度<0为超静定结构。静力学主要研究自由度≤0的机构。对于实体,存在X/Y/Z三个方向的移动共3个自由度,对于面体和线条,存在X/Y/Z方向的移动及绕X/Y/Z的转动共6个自由度。下表总结了部分约束所限制的自由度数量约束类型UXUYUZROTXROTYROTY备注固定约束强制强制强制强制强制强制6向约束位移约束可设置可设置可设置远程位移约束可设置可设置可设置可设置可设置可设置简支约束强制强制强制仅用于面体、线体固定旋转可设置可设置可设置3.1固定约束Fixed Support约束点、线、面的所有自由度,即约束实体X/Y/Z方向的移动,约束面体、线体X/Y/Z方向的移动及绕X/Y/Z的转动。固定约束需要注意的是在固定约束处会产生应力奇异,所以不能以固定约束处的应力作为结果判据。下面以截面为10mm×10mm的矩形条拉伸说明此问题,固定矩形条一端,另一端施加10000N的拉力,根据材料力学的理论。矩形条的应力应该为σ =F/A=10000/100=100MPa。使用固定约束后,在不同网格尺寸下的最大(奇异)应力见下表,最大(奇异)应力均出现在固定约束处。边界条件3.2位移约束Displacement约束点、线、面的位移自由度,即约束实体、面体、线体X/Y/Z方向的移动,默认是全局坐标系,可以在Define By中设置自定义的坐标系,在各向X/Y/Z Componernt设置X/Y/Z向强制位移的值,默认为Free(自由),设置为0时表示此方向约束,输入具体数值时表示在此方向强制移动此距离。注意,位移约束也可能会产生应力奇异,约束处的应力不能作为结果判据。位移约束3.3远程位移约束Remote Displacement远端点刚性连接线示意图远程位移约束是将所选的点、线、面连接到一个公共点(即定位点),在该点上对三向移动和三向转动共6个自由点进行设置,读者可以将此点理解为铰支点。实体设置旋转自由度常使用这一方法。默认的定位点是所选对象的质心,可以手动修改,所设置的6向自由度都是相对于定位点,定位点不同,所求结果有所区别。下例以不同定位点求解板材翘曲作探讨。200×40×12的板材,固定板材左面,右面施加三向远端位移约束,上端面中间施加向下的压力,比较不同定位点的求取结果。远端位移约束定位点定位点相对全局坐标位置C面的X向位移图备注C面形心C面的水平中心线不动C面上边线中心上边线不动从上例也可以看出,虽然给C面施加了XYZ三向移动约束,未施加转动约束度,C面发生了围绕定位点的转动运动(相当于铰支点),这是固定约束与三向位移约束无法实现的效果。同样,将固定约束出现应力奇异的案例使用远程位移约束重新计算,对A面施加6向约束,计算结果见下图。可见,计算结果中,约束处未出现应力奇异,所以我们也经常把远程位移约束称为万能约束。以上的远程位移中的行为Behavior都采用了默认的柔性Deformable设置,即允许约束面受力时变形,下例对比说明柔性与刚性Rigid的区别。如下图,两根材料与形状相同的方条,使用远程位移约束上表面的6个自由度,远程点均设置在上表面左边中心,C设置为Defomable,D设置为Rigid,在方条右端面分别加载1000N竖直向下的力。计算位移如下,施加了柔性约束的方条上表面出现了变形,施加了刚性约束的上表面未变形。实际上,施加刚性约束的面相当于施加了Fixed Support强制约束。3.4无摩擦约束Frictionless Support无摩擦约束是在几何体选定的面上施加法向约束,对切向不约束,效果等同于对称面的约束。3.5仅压缩的约束Compression Only Support仅压缩的约束是在选定的面上的法向施加仅压缩方向的约束,而拉伸方向自由,对切向不约束。注意,无摩擦约束是在选定面的法向施加拉伸和压缩的约束,而仅压缩的约束是在选定面的法向施加压缩方向的约束,所以无摩擦约束是线性约束,而仅压缩的约束是非线性约束,会增加计算时间。仅压缩的约束经常用于模拟物体放置于地面(或平台),此时允许物体脱离地面(或平台),但不允许穿过地面(或平台)。3.6圆柱面约束Cylindrical Support圆柱面约束是指在圆柱表面施加轴向、径向、切向(圆周方向)约束,默认三个方向都为固定,可以通过下拉菜单选择自由,该约束仅适用于小变形的线性分析。圆柱坐标示意图圆柱面约束加载方法3.7简支约束Simply Supported简支约束即简支点约束,只适用于线体或面体(即梁或壳单元),只能加载在边线或顶点上,简支约束约束三向位移,不约束旋转自由度。简支约束加载方法3.8固定旋转Fixed Rotation固定旋转只适用于线体或面体(即梁或壳单元),只能加载在的边线或顶点上,固定旋转约束三向旋转,不约束位移自由度。每一方向的旋转自由度可通过下拉菜单修改为free(自由)。固定旋转加载方法3.9弹性约束Elastic Support弹性约束允许面根据弹簧行为产生移动或变形,必须设置基础刚度S (Foundation Stiffness)。可以将弹性约束想象为给选定面加上了弹性系数为K的弹簧,当几何体受力时可以根据胡克定律F=Kx算出约束面的位移。但是基础刚度与弹性系数稍有不同,弹簧的弹性系数K的单位为N/mm,材料的弹性模量E与切变模量的单位为Mpa即N/mm²,而基础刚度S的单位为N/mm³。实际上,基础刚度S、应力σ、位移(变形)ΔL三者之间的关系符合胡克定律,即σ=S*ΔL又由于σ=F/A (F为内力,A为受力截面积),所以有弹性约束处的位移(变形):ΔL=σ/S=F/(A*S)以截面为10mm×10mm的矩形条为例说明此问题。矩形条左端施加S=100N/mm³的弹性约束,右端施加10000N的压缩力,根据胡克定律,左端弹性约束面变形应该为ΔL=σ/S=F/(A*S)=10000/(10×10×100)=1mm。输入边界条件验证如下,结果显示弹性约束面朝压缩方向位移为1mm。写在最后,有限元计算中的边界条件加载关系到整个计算是否可取可信,可能许多初学者喜欢不管三七二十一,一上来就使用固定约束,结果算出来可能和材料力学的经典算法相去甚远,也与试验数据不吻合,此时许多初学者往往会抱怨软件不行,有限元计算方法不行。但是通过本文,大家应该可以知道其他约束类型的重要性,希望本文能帮助到大家,由于本人水平有限,文字难免错误频出,希望大家不吝赐教。来源:CAE中学生

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈