声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2198|回复: 5

[编程技巧] 对加速度数组进行数值积分?

[复制链接]
发表于 2008-7-13 10:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
[x,y]=xlsread('d:\book5'); %读取数据文件
a=x(:,1); %读取时间值,并定义为数组a,列向量
b=x(:,2); %读取加速度值,并定义为数组b,列向量
[c1,s1]=polyfit(a,b,1); %对加速度值进行线性拟合
h1=length(a);
t1=linspace(0,max(a),h1); %读取时间点,行向量
b1=c1(1)*t1+c1(2); %读取每个时间点对应的趋势项加速度值,行向量
averg=b-b1'; %获取加速度修正值,列向量
Arcm=norm(averg)/sqrt(length(averg)); %求取加速度有效值,列向量
%对加速度值进行数值积分-梯形公式
n1=length(b)-1;%设置循环体循环次数
ti=0.0005;
for i=1:n1
       Vsum(i)=(b(i)+b(i+1))*ti/2;
end
for i=1:n1
    if i==1
       V1sum(i)=(b(i)+b(i+1))*ti/2;
    else
       V1sum(i)=V1sum(i-1)+(b(i)+b(i+1))*ti/2;
    end
end
t2=linspace(0.0005,max(a),length(V1sum)); %读取速度时间点
[c2,s2]=polyfit(t2',V1sum',1); %对速度值进行线性拟合
plot(t2',V1sum','-',t2',c2(1)*t2'+c2(2),'r');
b2=c2(1)*t2+c2(2); %读取每个时间点对应的趋势项速度值
V2sum=V1sum'-b2'; %获取速度修正值
plot(t2',V2sum','-');
%V1rcm=norm(V1sum)/sqrt(length(V1sum)); %求取速度的有效值
V2rcm=norm(V2sum)/sqrt(length(V2sum)); %求取修正速度的有效值
回复
分享到:

使用道具 举报

 楼主| 发表于 2008-7-13 10:24 | 显示全部楼层
高手给指点一下,这样求取速度有效值合适不?怎样进行误差控制?

[ 本帖最后由 grass22 于 2008-7-13 10:29 编辑 ]
发表于 2008-7-13 19:30 | 显示全部楼层
先贴个数据吧
 楼主| 发表于 2008-7-27 22:24 | 显示全部楼层
数据在附件里面,第一列为时间序列;第二、三列为加速度数值。经验证,加速度有效值和数据采集软件给出的值比较吻合,不知道转换为速度后是否误差较小?

数据.txt

186.24 KB, 下载次数: 27

发表于 2008-7-28 08:24 | 显示全部楼层
误差应该在 数据拟合 和数值积分部分
这个可以查数值方法的书,知道误差的精度

评分

1

查看全部评分

发表于 2012-6-2 15:59 | 显示全部楼层
下了看看
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-21 04:28 , Processed in 0.066438 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表