Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
 
 
主题工具 显示模式
旧 2011-03-23, 10:42   #1
leovikkieleo
初级会员
 
注册日期: 2011-03-23
年龄: 38
帖子: 1
声望力: 0
leovikkieleo 正向着好的方向发展
默认 关于离散加速度数据数值积分为速度和位移数据的问题

各位大侠,小弟目前在处理一个风的加速度时程曲线,想得到它的速度时程曲线进而得到位移时程曲线,自编程序如下,但运行产生的结果有问题存在。自感觉可能为程序编的不对但苦于找不到原因,希望各位高手可以指点迷津,在下感激不尽!
%输入实测信号数据
clear all;
fs=200;%采样频率
N=11999;%数据个数
n=0:N-1;
t=n/fs;%数据对应时间序列
a=['15.txt'];
b=textread(a);
save filename b;%选择内存中的b变量保存为filename.mat文件
figure
subplot(1,1,1);plot(t,b);
xlabel('时间/s');ylabel('加速度/m/s2');
title('实测加速度时程曲线');
%对实测加速度谱进行小波消噪
%装载采集的信号b.mat
load filename b;%把filename.mat文件中的b变量装入内存
%=============================
%将实测加速度信号中第1到第11999个采样点赋给mydy
indx=1:11999;
mydy=b(indx);
%用db1小波对原始信号进行3层分解并提取系数
[c,l]=wavedec(mydy,3,'db1');
mya3=appcoef(c,l,'db1',3);
myd3=detcoef(c,l,3);
myd2=detcoef(c,l,2);
myd1=detcoef(c,l,1);
%=============================
%对信号进行强制性消噪处理并图示结果
dd3=zeros(length(myd3),1);
dd2=zeros(length(myd2),1);
dd1=zeros(length(myd1),1);
myc1=[mya3;dd3;dd2;dd1];
mys1=waverec(myc1,l,'db1');
figure
subplot(1,1,1);
plot(t,mys1);
xlabel('t(s)'); ylabel('a(t)');
grid;
title('强制消噪后的实测加速度信号');
%将消噪后的实测加速度信号进行积分处理得到位移信号
%强制性消噪信号处理后
v1=cumtrapz(t,mys1);%v就是加速度的数值积分
figure
subplot(2,1,1);plot(t,v1);
xlabel('时间/s');ylabel('速度/m/s');
title('强制消噪后积分的速度时程曲线');
s1=cumtrapz(t,v1);%s就是速度的数值积分
subplot(2,1,2);plot(t,s1);
xlabel('时间/s');ylabel('位移/m');
title('强制消噪后积分的位移时程曲线');
得到的结果如下图所示:
实测加速度曲线
1.jpg
消噪后加速度曲线
2.jpg
变换后速度和位移曲线
3.jpg
明显可以看出计算的速度与位移时程曲线中熟知的大小与曲线的走势与实际情况不符,主要应该是求积分得到速度和位移时出现的错误,希望有知道的高手们多多指点一下,在下甚为感激!
leovikkieleo 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 12:23


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.