mxm 发表于 2007-6-14 17:29

关于振动信号小波时频分析

本人毕业设计的题目是用小波对振动信号进行时频分析,并用matlab进行仿真,流程是先生成一个有三种频率叠加而成的信号,再用matlab中小波工具箱的函数对信号进行处理,再通过一个滤波器提取其中的主频,本人编的程序如下:
N=8;
n=0:N-1;
Fs=8;
t=n/Fs;
t=-2*pi:pi/16:2*pi;
x1=5*sin(2*pi*1*t);
t=-2*pi:pi/16:2*pi;
x2=5*sin(2*pi*10*t);
t=-2*pi:pi/16:2*pi;
x3=5*sin(2*pi*20*t);
x=x1+x2+x3;
figure(1)
plot(x)
wname='morl';
scales=1:0.125:128;%取的尺度
coef=cwt(x,scales,wname);%小波变换
P=sum((coef.*coef),2)/length(coef);%对小波系数先求平方,
                                 %并对每一个尺度上小波系数平方值进行平均
f=scal2frq(scales,wname,1/Fs);%将尺度转化为对应的频率
figure(2)
plot(f,P)
wp1=0.45*pi; wp2=0.65*pi;
ws1=0.3*pi; ws2=0.75*pi;
Rp=1; Rs=40;
Wp1=tan(wp1/2); Wp2=tan(wp2/2);
Ws1=tan(ws1/2); Ws2=tan(ws2/2);
BW=Wp2-Wp1; W0=Wp1*Wp2; W00=sqrt(W0);
WP=1; WS=WP*(W0^2-Ws1^2)/(Ws1*BW);
=cheb1ord(WP,WS,Rp,Rs,'s');
=cheby1(N,Rp,Wn,'s');
=lp2bp(B,A,W00,BW);
=bilinear(BT,AT,0.5);
=freqz(num,den,64);
figure(3)
subplot(2,2,1);stem(omega/pi,abs(h));
xlabel('\omega/\pi');ylabel('|H(z)|');
好象不大行,有请高手帮我改改,或提供一个更好的程序,急求!

[ 本帖最后由 zhlong 于 2007-6-25 10:03 编辑 ]

VibrationMaster 发表于 2007-6-14 21:05

谐波的和类似平稳信号,小波的优势根本无法表现.选题不当

huq001 发表于 2007-6-15 18:42

:@D

wy558558558 发表于 2007-6-24 23:09

导师给个建议吧,我的几乎都是谐波分量,我就当是滤波器用了.咳.能不能给我想个法
页: [1]
查看完整版本: 关于振动信号小波时频分析