声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: kevin19821

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

[复制链接]
发表于 2007-12-25 13:54 | 显示全部楼层
W=conv(s1,x);%求小波变换
这就是你求出的小波变换系数?W是一个向量还是矩阵?好像是向量,这个小波变换我看不明白,小波变换出来的应该是三维的数据--尺度,时间,小波变换系数。你好像是先指定合适的尺度(临近模态频率),从而免去求小波脊线的过程,这样做仿真信号计算还行,但是实际信号不可行,因为实际的模态频率未知,你无法预先指定尺度。
回复 支持 反对
分享到:

使用道具 举报

发表于 2007-12-25 14:46 | 显示全部楼层

回复 #16 hyl2323 的帖子

的确如此。
还请主任多多指教!
我觉得应该先求出脊线对应的尺度,进而再求解。不知主任意思如何?
发表于 2007-12-25 21:45 | 显示全部楼层

回复 #12 kevin19821 的帖子

我做了一下,结果还是令人满意的,但是过程比较繁琐!
首先,对信号进行时频分析,得出脊线对应的尺度。进而再进行连续小波变换,应用上图中的公式进行计算。如下:
clc
clear all
%a(1)=20;
Te=0.001;
t=0:0.001:1;
s=2*exp(-2*pi*2*t).*cos(2*pi*40*t);
%s=cos(2*pi*40*t);
wavename='cmor2-1';
scal=5:1:100;
coefs=cwt(s,scal,wavename,'glbabs');
%coefs=cwt(s,scal,wavename);
figure(1)
xlabel('时间 t/s');
ylabel('尺度');
title('小波时频图');
grid on;
xlim([0 1]);ylim([20 100])
colorbar;
colormap(jet);
%%
以上是用来确定脊线对应的尺度!
接下来便模态是参数识别:
clc
clear all
a=25;
Te=0.001;
t=0:0.001:1;
s=2*exp(-2*pi*2*t).*cos(2*pi*40*t);
wavename='cmor2-1';
fc=centfrq(wavename);
wa=cwt(s,a,wavename);
fai=angle(wa);
fai=unwrap(fai);
figure(2)
plot(t,fai)
wb=abs(wa);
wc=log(wb);
figure(3)
plot(t,wc)
%nmd1=diff(wc);
%nmd2=diff(fai);
[a,s]=polyfit(t,fai,1);
[b,s]=polyfit(t,wc,1);
nmd1=a(1);nmd2=b(1);
wn=sqrt(nmd1^2+nmd2^2);
kexi=-nmd2/wn;
最后的结果是可以验证,识别精度还挺高!
大家多讨论下吧

评分

1

查看全部评分

发表于 2007-12-25 22:54 | 显示全部楼层
fudy10和我当时的思路差不多,如遇知音!
1)微分的函数diff要改进就更好了;
2)没有小波脊线的识别程序(是看图得出的?);
3)这是单自由度仿真信号,多自由度精度要差写(微分的精度在此体现)。
很不错,强人!
发表于 2007-12-26 10:18 | 显示全部楼层

回复 #19 hyl2323 的帖子

的确是如此!
现在也不知道多自由度系统该怎么进行下去?
还有,根据相位的方法好像也是只能提取单自由度系统的脊线,多自由度系统得用crazy climber算法。但是那个算法实在是不懂!
主任,你以前做过模态识别吧,你用的是啥方法呢?
发表于 2007-12-26 11:22 | 显示全部楼层
我用的就是你程序的方法,有些细节要注意,方法本身对单自由度系统是合理的,误差的产生主要是被分析信号噪声大,或者模态比较密集,叠加太严重,crazy方法我听都没听过,呵呵,so crazy。
 楼主| 发表于 2007-12-29 15:14 | 显示全部楼层
原帖由 fudy10 于 2007-12-25 21:45 发表
我做了一下,结果还是令人满意的,但是过程比较繁琐!
首先,对信号进行时频分析,得出脊线对应的尺度。进而再进行连续小波变换,应用上图中的公式进行计算。如下:
clc
clear all
%a(1)=20;
Te=0.001;
t ...


强人呀!不知道多自由度的话这个程序应如何改进了
 楼主| 发表于 2007-12-29 15:25 | 显示全部楼层
振动与冲击上的<基于morlet小波变换的模态参数识别研究>,有关于模态密集的解决方法
发表于 2008-1-2 21:34 | 显示全部楼层
:loveliness: 可以請問一下 在此必須使用unwrap函數處理 是為什麼呢?  謝謝
发表于 2008-1-5 17:31 | 显示全部楼层
angle求出的相位是2pi范围内,求的是复数的幅角主值,但是,我们做模态参数识别是要求相位随时间变化的斜率,如果不unwrap一下,相位都不是单调的,而是在2pi内波动,无法求出理论的常数斜率。
发表于 2010-5-12 01:01 | 显示全部楼层

回复 19楼 hyl2323 的帖子

精度差是什么原因呢??有什么方法能改进下??
发表于 2010-5-26 16:06 | 显示全部楼层
不要用用求导的方法来求参数,误差会很大,用直线拟合方法,结果很精确的,matlab里面有polyfit函数可以直接得到直线的斜率。不过用Morlet小波做参数识别得到的直线会有边界效应,在拟合时要取直线的中间一段,结果会很精确。
发表于 2012-12-18 17:54 | 显示全部楼层
谁还做小波模态参数识别呀,好多问题不能解决
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-6-14 12:06 , Processed in 0.085877 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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