hyl2323 发表于 2007-12-25 13:54

W=conv(s1,x);%求小波变换
这就是你求出的小波变换系数?W是一个向量还是矩阵?好像是向量,这个小波变换我看不明白,小波变换出来的应该是三维的数据--尺度,时间,小波变换系数。你好像是先指定合适的尺度(临近模态频率),从而免去求小波脊线的过程,这样做仿真信号计算还行,但是实际信号不可行,因为实际的模态频率未知,你无法预先指定尺度。

fudy10 发表于 2007-12-25 14:46

回复 #16 hyl2323 的帖子

的确如此。
还请主任多多指教!
我觉得应该先求出脊线对应的尺度,进而再求解。不知主任意思如何?

fudy10 发表于 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();ylim()
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);
=polyfit(t,fai,1);
=polyfit(t,wc,1);
nmd1=a(1);nmd2=b(1);
wn=sqrt(nmd1^2+nmd2^2);
kexi=-nmd2/wn;
最后的结果是可以验证,识别精度还挺高!
大家多讨论下吧

hyl2323 发表于 2007-12-25 22:54

fudy10和我当时的思路差不多,如遇知音!
1)微分的函数diff要改进就更好了;
2)没有小波脊线的识别程序(是看图得出的?);
3)这是单自由度仿真信号,多自由度精度要差写(微分的精度在此体现)。
很不错,强人!

fudy10 发表于 2007-12-26 10:18

回复 #19 hyl2323 的帖子

的确是如此!
现在也不知道多自由度系统该怎么进行下去?
还有,根据相位的方法好像也是只能提取单自由度系统的脊线,多自由度系统得用crazy climber算法。但是那个算法实在是不懂!
主任,你以前做过模态识别吧,你用的是啥方法呢?

hyl2323 发表于 2007-12-26 11:22

我用的就是你程序的方法,有些细节要注意,方法本身对单自由度系统是合理的,误差的产生主要是被分析信号噪声大,或者模态比较密集,叠加太严重,crazy方法我听都没听过,呵呵,so crazy。

kevin19821 发表于 2007-12-29 15:14

原帖由 fudy10 于 2007-12-25 21:45 发表 http://www.chinavib.com/forum/images/common/back.gif
我做了一下,结果还是令人满意的,但是过程比较繁琐!
首先,对信号进行时频分析,得出脊线对应的尺度。进而再进行连续小波变换,应用上图中的公式进行计算。如下:
clc
clear all
%a(1)=20;
Te=0.001;
t ...

强人呀!不知道多自由度的话这个程序应如何改进了

kevin19821 发表于 2007-12-29 15:25

振动与冲击上的<基于morlet小波变换的模态参数识别研究>,有关于模态密集的解决方法

yamahaman 发表于 2008-1-2 21:34

:loveliness: 可以請問一下 在此必須使用unwrap函數處理 是為什麼呢?謝謝

hyl2323 发表于 2008-1-5 17:31

angle求出的相位是2pi范围内,求的是复数的幅角主值,但是,我们做模态参数识别是要求相位随时间变化的斜率,如果不unwrap一下,相位都不是单调的,而是在2pi内波动,无法求出理论的常数斜率。

lancerevo 发表于 2010-5-12 01:01

回复 19楼 hyl2323 的帖子

精度差是什么原因呢??有什么方法能改进下??

kaiber 发表于 2010-5-26 16:06

不要用用求导的方法来求参数,误差会很大,用直线拟合方法,结果很精确的,matlab里面有polyfit函数可以直接得到直线的斜率。不过用Morlet小波做参数识别得到的直线会有边界效应,在拟合时要取直线的中间一段,结果会很精确。

寂寞的部落 发表于 2012-12-18 17:54

谁还做小波模态参数识别呀,好多问题不能解决
页: 1 [2]
查看完整版本: Molet小波的模态识别