Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2011-03-23
年龄: 38
帖子: 1
声望力: 0 ![]() |
![]()
各位大侠,小弟目前在处理一个风的加速度时程曲线,想得到它的速度时程曲线进而得到位移时程曲线,自编程序如下,但运行产生的结果有问题存在。自感觉可能为程序编的不对但苦于找不到原因,希望各位高手可以指点迷津,在下感激不尽!
%输入实测信号数据 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 明显可以看出计算的速度与位移时程曲线中熟知的大小与曲线的走势与实际情况不符,主要应该是求积分得到速度和位移时出现的错误,希望有知道的高手们多多指点一下,在下甚为感激! |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2012-02-13
年龄: 38
帖子: 1
声望力: 0 ![]() |
![]()
不知道楼主得到解决办法没有?我的也是这种情况。。。求指点
|
![]() |
![]() |