频域积分

积分问题一直都困扰着我

 

原来在国外的时候,朋友搞地震,测出来的加速度信号,老是不知道怎么转换成位移。其实原理很简单,加速度一次积分成速度,二次积分变位移。

 

可是实现起来总是有很多问题,

 

第一,首先要去采集到的加速度信号做一些处理;如基线的调整,滤波及趋势项等等

 

第二,积分算法,现在很多时候都用梯形算法,但总是不太准确;

 

第三,误差太大

 

 

以下摘录:

 

数值积分结果误差大,究其原因,主要有两个方面。

 

第一,积分过程中受到“平移项”(直流偏置)的影响。可以通过简单的减去积分结果的均值来消除平移项的影响。国内外绝大部分测试软件中的数值积分都有此项功能。

 

第二,积分过程中受到“趋势项”的影响。

 

所谓趋势项是在测试信号中存在线性项或缓变的非线性项成分。工程实际测量的信号大部分是复杂周期信号与随机信号的混合,而且周期信号往往是研究对象。趋势项的存在会使数值积分的结果产生很大的误差,严重地背离真实情况。因此,在测试信号(积分求速度、位移时)中常要先消除趋势项,这是积分中的一个重要的中间步骤。

 

产生趋势项的原因主要有以下几种:

1)采样时未对原始信号进行适当处理,如高通滤波,使得信号中含有周期大于采样时间的极低频信号。

 

2)由于外界原因,包括传感器或仪器的零点漂移、基础运动等引起的信号波形偏移。

 

3)在截取记录时,样本长度选择不当。

 

4)由于操作不当,信号经过积分放大后产生趋势项,如零点未调准产生的常数,经积分后成为一条斜直线,低频噪声经积分放大后成为缓慢变化的趋势项。

 

可见产生趋势项的原因是很复杂的,要在实际采集的数据中完全避免趋势项十分困难。

 

——张永强、宋建江、屠良尧、薛姗,软件数值积分误差原因分析及改进办法,机械强度,第28卷第3期,p419~423
 

基线调整-最小二乘法消除多项式趋势项

王济的《MATLAB在振动信号处理中的应用》一书的原程序:

 

 

fni=input('频域积分——输入数据文件名:','s');
fid=fopen(fni,'r');
fno=fscanf(fid,'%s',1);
x=fscanf(fid,'%f',[1,inf]);
status=fclose(fid);

sf=1000;    %采样频率
fmin=0.1;     %最小截止频率
fmax=200;       %最大截止频率
c=9810.5;

n=length(x);
t=0:1/sf:(n-1)/sf;
nfft=2^nextpow2(n);
y=fft(x,nfft);
df=sf/nfft;
ni=round(fmin/df+1);
na=round(fmax/df+1);
dw=2*pi*df;
w1=0:dw:2*pi*(0.5*sf-df);
w2=-2*pi*(0.5*sf-df):dw:-dw;
w=[w1,w2];
a=zeros(1,nfft);
a(2:nfft-1)=y(2:nfft-1)./w(2:nfft-1);
real(y)=imag(a);
imag(y)=-real(a);
a=zeros(1,nfft);
a(ni:na)=y(ni:na);
a(nfft-na+1:nfft-ni+1)=y(nfft-na+1:nfft-ni+1);
y=ifft(a,nfft);
y=real(y(1:n))*c;
subplot(2,1,1);
plot(t,x);
xlabel('时间(s)');
ylabel('加速度(g)');
grid on;
subplot(2,1,2);
plot(t,y);
xlabel('时间(s)');
ylabel('速度(m/s)');
grid on;
fid=fopen('a.txt','w+');
for k=1:n
    fprintf(fid,'%f/n',y(k));
end
status=fclose(fid);

 

 

积分误差的修正

通过高通滤波去趋势项

测量信号中的趋势项和实际信号的周期比较要长很多,此时可以先把测到的信号进行高通滤波处理,滤除低频趋势项。此种消除趋势项的方法要求实验人员必须对所测结构的基频有一个大致的了解(可以通过有限元计算或先对实测信号进行频谱分析确定),在对结构基频了解的基础上,设置一个合适的高通滤波器的截止频率(大量测试数据表明截止频率设为基频的60%左右时消除趋势项的影响效果较好)。让测得的数据先经去直流和高通滤波后再进行数值积分,可以取得较为满意的积分效果。

 

EMD分解法去趋势项

根据定义,EMD分解方法假定任何待分解信号都由一组固有振动模式构成,并据此将信号分解为若干固有模式函数(intrinsic mode functionIMF)的和与趋势项的叠加。

 

具体实施时,可在EMD分解中指定每个IMF分量的时延或频率(时延的倒数),以保证在分解得到的IMF中不包含有低于此设定频率值的信号(积分要消除的趋势项)。例如,在第iIMF分量Ci的筛选过程中,设定“间歇检测准则”对应的频率fc,则完成筛选过程后,分量Ci中不含有频率低于fc的成分。可见,这里的频率fc类似于高通滤波器中设定的截止频率值。具体做法是是,第一步进行数值积分消除直流的影响,第二步将信号进行EMD分解,提取出合适的趋势项,用各个IMF分量重构得到消除了趋势项的数值积分结果。

 

——张永强、宋建江、屠良尧、薛姗,软件数值积分误差原因分析及改进办法,机械强度,第28卷第3期,p419~423

  • 5
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab中,频域积分是一种信号处理方法,可以通过将信号转换到频域来进行积分操作。频域积分比时域积分更为准确和有用。通过将信号进行傅里叶变换,可以将信号从时间域转换到频域,然后对频域信号进行积分操作。这种方法在信号处理领域经常被使用,可以用于分析和处理不同类型的信号数据。在Matlab中,可以使用fft函数进行傅里叶变换,然后对变换后的频域信号进行积分操作,以实现频域积分的目的。在具体的程序中,可以使用类似于引用中的代码来消除指定负频带外的频率成分,以便在进行频域积分时只考虑感兴趣的频率范围。根据具体的需求,可以替换代码中的数据进行相应的分析处理。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [MATLAB频域积分](https://download.csdn.net/download/shenliu0558/10795171)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [matlab频域积分,matlab加速度频域积分求位移方法中,最大,最小截止频率都是怎样得来的?...](https://blog.csdn.net/weixin_42522964/article/details/115959072)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值