感悟网 导航

求matlab加速度积分位移程序问题,求解决。 matlab中怎样将加速度信号积分

作者&投稿:红肯 (若有异议请与网页底部的电邮联系)
最近在用matlab处理振动数据,加速度频域积分为位移,但是我不明白为什么最后是用逆变换的实部作为结果?~

以上程序是对加速度二次积分为位移,将时域积分装换为频域积分, 实现方法为将时域信号进行FFT到频域,然后对频谱做简单运算实现了频域上的积分 最后将频域经过IFFT到时域 实现了频域上的积分。
时域积分对应在频域上的频谱函数为:∫f(x)dx →F(jw)/jw

所以时域上的一次积分对应在频域上的处理为:逆完FFT之后取虚部,因为加速度与速度之间的关系为jw
二次积分时因为是-w^2,所以有 y=-a 即为取实部

我是用采集到的加速度信号来做两次积分得到位移信号,由于采集到的加速度信号有直流偏移量,所以用了detrend命令做去趋势处理。为了检验代码是否正确,我用了一个标准的正弦函数来验证。代码如下:
t=(0:1:10240-1)/2000;
a=sin(5*t); %标准的正弦函数,准备对其进行两次积分处理
fs=2000;
N=10240;
za=detrend(a); %对采集到的加速度信号去趋势处理(因为采集到的加速度信号有直流偏移量)
v=cumtrapz(t,za); %对加速度信号积分得速度信号
zv=detrend(v); %对速度信号去趋势处理
l=cumtrapz(t,zv); %对速度信号积分得到位移信号
zl=detrend(l); %对位移信号去趋势处理
figure(1)
subplot(3,1,1)
plot(t,za)
title('加速度信号');
subplot(3,1,2)
plot(t,zv)
title('速度信号');
subplot(3,1,3)
plot(t,zl)
title('位移信号');

在求解edot的平均数时,没有输入有效的数组,即edot数组为空数组,检查一下输入

《怎样用matlab将离散的速度信号求导和求积变成加速度和位移信号》
答:下面的就是离散信号求微分和积分的计算公式,相信你能看懂。1.当前加速度=(当前速度-上一次速度)/采样时间 2.当前位移=上一次位移+(当前速度+上一次速度)*采样时间/2 积分属于梯形积分

《matlab用ode45解微分方程,结构动力响应。》
答:是的,需要用for循环语句来某一时刻的位移、速度、加速度。求解方法如下:主程序 t=0:0.02:0.2;for i=1:length(t)g=0.00098;f=g*t(i);y0=zeros(1,6);tspan=[0 0.2];[t,y]=ode45(@(t,y)myode(t,y,?),tspan,y0,options);figure(i)plot(t,y(:,1),t,y(:,3),t,y(...

《如何用MATLAB对速度求导得加速度?》
答:2、根据数学模型,自定义其函数,func=@(a,t)a(1)+a(2)*t 3、根据时间和速度的数据,使用lsqcurvefit或nlinfit等拟合函数,求出其系数a0、b0 4、得到v(t)表达式后,可以用diff函数求导,得到该加速度a(t)表达式 5、将已知t时间值,计算加速度值 6、用max函数求出最大加速度,用mean函数求出...

《matlab如何求定积分 f(t) =∫a*exp(t-x)*sin(t-x)dx 下限0 上限t_百度...》
答:1、首先,自定义函数f(t)2、然后,应循环语句,求出不同t 和对应加速度a下的f(t)值 实现代码:syms x t a func=@(a,t)[a*exp(t-x)*sin(t-x)];A=[0.02 0.0012;0.04 0.0022;0.06 0.0017;0.08 0.0031];n=4;for i=1:n a=A(i,1)ft=int(func,x,0,t);t=A(i...

《matlab如何求定积分 f(t) =∫a*exp(t-x)*sin(t-x)dx 下限0 上限t_百度...》
答:1、首先,自定义函数f(t)2、然后,应循环语句,求出不同t 和对应加速度a下的f(t)值 实现代码:syms x t a func=@(a,t)[a*exp(t-x)*sin(t-x)];A=[0.02 0.0012;0.04 0.0022;0.06 0.0017;0.08 0.0031];n=4;for i=1:n a=A(i,1)ft=int(func,x,0,t);t=A(i...

《求matlab程序,用matlab解微分方程,并且画出两个小车的位移,速度,加速 ...》
答:没法设置无穷大处的边界条件的,貌似 不过可以设置一个很大的数作为边界 比如y(10000)=1 然后就用matlab自带的ode45等解就可以了,可以参考一下以下的帖子

《已知数据列(速度值),时间利用matlab如何得到这些数据列的加速度?有程序...》
答:假设速度为v,时间为t 则这个数据列的加速度为 a=diff(v)./diff(t)加速度就是速度差值与时间的比值!祝你学习愉快!

《怎样用matlab对曲线进行积分》
答:如果你是由仪器测得的曲线数据,要看你的采样频率是否高,如果足够高的话,积分实际上就是各个采样点的和,如果采样频率不高,可以先根据采样点进行曲线拟合或多段曲线拟合,再分别对拟合后的曲线方程求积分

《在机构设计过程中,利用+MATLAB+进行运动学数值计算过程中,首先求解的...》
答:在机构设计过程中,利用+MATLAB+进行运动学数值计算过程中,首先求解的是 1、首先根据结构原理,列出位移方程 s(t);2、再根据位移方程,得到速度方程 v(t);3、再根据速度方程,得到加速度方程 a(t);4、再利用数值分析的方法,求出某时刻的位移、速度、加速度值 5、利用matlab的绘图函数plot(),...

《MATLAB中怎样将得到的时间位移响应转换成时间加速度响应?程序中对哪些...》
答:2012-12-10 matlab中单位加速度响应怎么求? 2 2018-01-24 加速度、速度和位移振动的大小如何转换? 2016-07-24 Matlab中由加速度响应怎么积分得到位移响应 1 2015-01-28 matlab中怎样将加速度信号积分 14 2017-02-19 如何用Matlab作出活塞的位移,速度,加速度曲线 2017-04-28 程序中,哪一个参数决定时移...

   

返回顶部
本页内容来自于网友发表,若有相关事宜请照下面的电邮联系
感悟网