首页/文章/ 详情

一文搞懂nCode信号处理

5月前浏览5581

振动、疲劳等分析中经常会用到信号处理,这些基本上都是书上不说但是你却不得不用的技能。传统的方法是使用Matlab进行信号处理,但是nCode中内置了大量的信号处理模块,都是一看就会一用就对的傻瓜式操作。

1 时序信号生成 

信号生产模块在Input——Time Series Genertor中,将这个模块拖入到工作区,生成TSGenertor1工作框。再拖入一个XY Dplay方便显示,将信号生成器与显示器相连。

点击运行,便可观察到生成的时间序列信号,默认的信号为正弦信号,频率为1Hz,幅值为1。   

双击TSGenertor1,进入属性界面,可修改信号类型。

常用的信号类型如下图,需要注意的是,白噪声在每次点击运行按钮后,都会重新生成一组随机白噪声。   

2 时序信号的输入与输出 

2.1 时序信号的输入

nCode支持csv电子文档的格式输入,但是需要进行ASCII转换。

打开电脑上的excel软件,A列为时间,采样率20(每秒20个点),即时间间隔为0.05s,总时间2s,B列为幅值,单位mm,幅值a与对应时间t关系为a=sin(t*π)+0.5*sin(5*t*π)。

这是由两个正弦幅值相加的信号,第一个正弦信号圆频率为π,幅值为1,第二个正弦信号圆频率为5π,幅值为0.5。选中AB列所有数据,点击插入——散点图,可以观察波形。   

将excel文件另存为csv文件,注意保存路径与名称都必须为英文。

打开ncode,点击ASCII转换器,选择刚才的csv文件,点击next。   

设置要过滤的数据,首先第一行表头需要过滤,其次第一列所有时间需要过滤,因为我们只需要幅值,时间通过下一步的采样率来生成,过滤掉的数据会以灰色在预览框显示,点击下一步。   

设置采样率为20,点击转换,插件将会把数据转换为同名的s3t时序文件并保存在源文件路径。

在ncode中创建TSInput框图,勾选框图的Display按钮以便显示。

双击TSIput1框图,选择导入的数据。

点击TSInput框右上角图标可全屏显示。这里可以看到信号曲线的转折处不够光滑,这是因为源数据的采样点设置的比较少导致的,并不是ASCII转换造成误差。   

2.2 时序信号的输出 

ncode默认输出的时序信号格式为s3t,它是ncode的专用格式数据,无法使用其他软件打开查看。但是本文也会介绍如果输出csv电子表格文件。

接着以上文数据为例,拖到TSOutput到工作区域,并创建连接。

双击TSOutput1框图进入属性设置,NamingMethod修改为NewName,NameText输入名字,点击ok确定。   

点击运行即可在工作目录文件夹输出s3t文件。

如果要输出csv文件,只需要在属性中设置输出文件格式为csv。

3 信号的处理 

 3.1 信号的连接

创建两个TSGenerator信号,信号1为幅值为1,周期和总时间均为1s的正弦信号,信号1为幅值为2,周期为0.5s,总时间为2.5s的余弦信号(通过设置初始相位角为90°得到)。

通过Concatenation即可将他们连接为一个信号。

两个信号的连接过渡处默认以直线相连接,也可双击进入属性,修改JointType为其他连接方式,以及过渡时间JointTime。

3.2 信号的幅值运算 

一个信号可通过幅值运算与一个常数进行加减乘除,同样两个信号的幅值之间也能进行加减乘除运算。   

比如需要需要将一个正弦信号的平均值设置为1,而不是0。拖动运算器进行如下连接。

双击运算器进入属性设置,运算器默认是将信号1与一个常数进行相加运算,设置常数为1,点击运行即可完成平均值的修改。

同样以上面的两个TSG信号为例进行运算,两个信号的总时间和采样率必须相同才能运算,所以将信号1的总时间修改为2s。选择运算器进行连接。   

我们此处是要将两个信号的幅值相加,需要将Operator修改为Equation,在Equation中输入test1+test2,不区分大小写。

点击运行,便得到两个信号的幅值相加结果。   

3.3 多通道信号的合并 

将多个信号合并为一个多通道信号是通过Test Combination完成的,可以一次性完成多个信号的合并。

双击框图进入属性设置,可以设置信号数量。   

注意XYDisply显示多通道也需要设置。

3.4 多通道信号的分离 

与合并相反,可以将多通道信号拆分为多个信号,一次只能拆分出一个通道

注意属性设置。

本文先写到这里,ncode的信号处理功能原不仅此,还能进行傅里叶时频转换、滤波、曲线拟合、雨流计数等,以后再慢慢研究。   

来源:CAE中学生
振动疲劳电子其他软件MATLAB
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-05-11
最近编辑:5月前
CAE无剑
硕士 | 仿真工程师 CAE中学生
获赞 679粉丝 1494文章 246课程 0
点赞
收藏
作者推荐

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

众所周知,振动中会用到响应谱,响应谱分析的主要用途是代替瞬态动力学的时程分析,如下图,将一个复杂的复杂的时域信号使用拟合的方法,分离成众多的谐波信号,即正弦或余弦信号,由于频谱图省略了各谐波的相位信息,只记录它们的频率与幅值,所以是近似且快速的计算手段。这个内容在教主的动力学课程中说得很详细了。严格意义上,响应谱分析中的边界条件是一种响应,因为输出的反应谱是位移(速度、加速度或力)与频率之间的关系,这种关系称为频谱。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); %对应第二列figurey=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中学生

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