声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4597|回复: 27

[小波] Molet小波的模态识别

[复制链接]
发表于 2007-12-21 08:49 | 显示全部楼层 |阅读模式

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

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

x
clc
clear all
clf
fs=256;
dt=1/fs;
N=1024;
t=(-N/2)*dt:dt:(N/2-1)*dt;
f0=0.4;
a=5;
n=100;
%s=exp(-2*pi*f0*t*i/a-(t/a).^2/2);
s=exp(-2*pi*f0*t*i/a-(t/a).^2/n);%MORLET小波
s1=(1/sqrt(a))*conj(s);
% plot(real(s))
s1=conj(s);
t1=t;
x=0*t;
nfft=N;
%  x=0.5*exp(-2*pi*0.0203*20.017*t1).*cos(2*pi*20.017*sqrt(1-0.0203^2)*t1+pi/4);
x=0.5*exp(-2*pi*0.028874*0.7503*t1).*cos(2*pi*0.7503*sqrt(1-0.028874^2)*t1+pi/4);%第3阶自由响应
% x=2.5*exp(2*pi*2.8874*0.7503).*cos(2*pi*0.7503*t+pi/4);
%  plot(t1,x)
W=conv(s1,x);%求小波变换
theta=angle(W);
W1=abs(W);
W2=log(W1);
nmd1=diff(W2);
nmd2=diff(theta);
fk=sqrt(nmd1.^2+nmd2.^2)/(2*pi);
epsl=-nmd1/(fk);%求阻尼比

[ 本帖最后由 zhangnan3509 于 2007-12-23 11:42 编辑 ]
未命名.GIF
回复
分享到:

使用道具 举报

 楼主| 发表于 2007-12-21 09:30 | 显示全部楼层
图片以下字发多了,不知道怎么删除呀?
发表于 2007-12-21 13:29 | 显示全部楼层
我也做过小波的参数识别工作,我用的是二进小波
发表于 2007-12-21 14:05 | 显示全部楼层
我用的连续复morlet小波变换进行参数识别,不知道二进小波如何做?楼上介绍介绍
发表于 2007-12-22 13:55 | 显示全部楼层
感觉你的diff命令求直线斜率不妥!
我试算了一下,你的辨识精度不高啊?(不知我对不对啊!)
还有,提取脊线的方法是不是还有crazy climber算法啊,这个算法实在是搞不明白,不知大家怎么看?
 楼主| 发表于 2007-12-23 08:51 | 显示全部楼层

回复 #6 fudy10 的帖子

谢谢fudy10,我在这边用diff求直线斜率我也看了下精度很不高,但是也不知道这个程序应该怎么修改的

[ 本帖最后由 kevin19821 于 2007-12-23 08:54 编辑 ]
gif.GIF
发表于 2007-12-23 10:17 | 显示全部楼层

回复 #7 kevin19821 的帖子

因为求直线的斜率关系到识别的精度,所以可以考虑用最小二乘法来计算吧!其实,我觉得画出图形也明显些。
 楼主| 发表于 2007-12-24 08:53 | 显示全部楼层
谢谢fudy10,我在修改以下
发表于 2007-12-24 13:05 | 显示全部楼层
kevin的molet小波选择的是哪个?我用的直接是matlab的cmor1-2
发表于 2007-12-24 13:18 | 显示全部楼层

回复 #9 hyl2323 的帖子

他使用的是自定义的morlet小波,n是自取的!其实n是可以最优化来求的
 楼主| 发表于 2007-12-24 14:05 | 显示全部楼层
是的,我用的自定义的morlet小波 通过调节n可以获得最佳的阻尼比和振荡频率  
我是参考振动与冲击上的<基于morlet小波变换的模态参数识别研究>,大家可以下载看看 我的程序和人家论文上的结果相差很大  谁帮忙给咱修改下程序了
 楼主| 发表于 2007-12-24 18:36 | 显示全部楼层

回复 #7 fudy10 的帖子

fudy10,最小二乘求直线斜率不知道在这个程序里面应该怎么写?我真不知道怎么修改了
发表于 2007-12-25 11:01 | 显示全部楼层

回复 #12 kevin19821 的帖子

我尝试了许久,还是没有成功。
我觉得,应该提取出脊线。因为识别的时候模值都是局部极大值的。
但是你的程序里面好像不是这么反映的?
发表于 2007-12-25 13:44 | 显示全部楼层
diff求斜率肯定不行,误差太大,我写过好几种求微分的方法,有三点法,五点法等,至少用三点法。
发表于 2007-12-25 13:47 | 显示全部楼层
theta=angle(W);
nmd2=diff(theta);
你的相位没有用unwrap函数处理一下?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-29 05:01 , Processed in 0.072255 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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