马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
本人毕业设计的题目是用小波对振动信号进行时频分析,并用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);
[N,Wn]=cheb1ord(WP,WS,Rp,Rs,'s');
[B,A]=cheby1(N,Rp,Wn,'s');
[BT,AT]=lp2bp(B,A,W00,BW);
[num,den]=bilinear(BT,AT,0.5);
[h,omega]=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 编辑 ] |