MATLAB中如何将离散加速度积分求得速度

方法一:

E=load('C:\Users\Administrator\Desktop\in.txt');
D=E-sum(E(:,1))/length(E);
figure(1)
plot(D)
 title('滤波前加速度')
%%%%%%%%%%%%%%%%%%%%%%%%%%%


% 积分%%%%%%%%%%%%
dt=0.1;
Sx=0;
for i=1:1:length(D)
Sx=D(i,1)*dt+Sx ;%从最值位置叠加加速度
Vx(i,1)=Sx; %速度矩阵
end
figure(2)
subplot(2,1,1)
plot(Vx)
ylabel('速度')
%%% 直流分量确定和积分基线的标定 %%%%%%%%%%%%%%%%%%%%%
Vx=Vx-sum(Vx(:,1))/length(Vx);
% Sx2=dt*cumtrapz(Vx-0.04) %X方向位移矩阵,其中0.04为通过整周期积分得出的直流分量值。
Sx2=dt*cumtrapz(Vx); %X方向位移矩阵,其中Vx为通过标定后的速度矩阵。
subplot(2,1,2)
plot(Sx2)
ylabel('位移')



方法二:

将下面内容保存为Simpson.m
function y= Simpson(f,a,b,M)
% f被积函数;a积分下限;b积分上限;M子区间个数(将x分为多少个区间)
if M==0
    y=0;
else
h=(b-a)/(2*M);
s1=0;
s2=0;
for i=1:M
    x=a+(2*i-1)*h;
    s1=s1+feval(f,x);
end
for j=1:(M-1)
    x=a+2*j*h;
    s2=s2+feval(f,x);
end
y=h/3*(feval(f,a)+2*s2+4*s1+feval(f,b));
end
在命令行输入
f=@(t)sin(t);
I=[];
M=floor(2*pi/0.01);
for i=0:M
y=Simpson(f,0,2*pi/M*i,i);
I=[I,y];
end
t=0:0.01:2*pi;
plot(t,I);


参考文档:

http://wenku.baidu.com/link?url=Ev0hrBVSJi-0gS98fEx9eEUCOwt6-d5-k30Qm1Tza-Ho2Fv3iif7rGoDD-b3jru9ebuBZzxpK6lCPIiQv00sCdqn_kPjr0XdTOI7AFrNEi7

  • 7
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值