我自己编的谐波小波程序(供大家参考)
clcclear all
fs=4096;
dt=1/fs;
N=2048;
f=fs*(0:N-1)./N;
t=0:dt:2047*dt;
Wd=hann(2048);
y1=3*sin(2*pi*50*t)+2*sin(2*pi*100*t);
y2=0.05*sin(2*pi*150*t);
s=y1+y2;
subplot(411)
plot(t,y2);
fs1=dt*fft(s)./(2*pi);
%j=7,s=127
figure(1)
subplot(412);
plot(f-fs/2,abs())
m=148;
n=152;
fsai=(exp(2*n*pi*t*i)-exp(2*pi*m*t*i))./(2*pi*(n-m)*t*i+1e-100).*Wd';
f1=dt*fft(fsai)./(2*pi);
subplot(413)
f=fs*(0:N-1)./N;
plot(f-fs/2,abs());
N=length(s);
W=f1.*fs1;
subplot(414)
plot(f-fs/2,abs());
w1=4*pi*2*pi*ifft(W)./dt;
figure(2)
subplot(211)
plot(t,real(w1))
subplot(212)
plot(t,imag(w1))
[ 本帖最后由 zhlong 于 2007-8-15 11:46 编辑 ]
回复 #1 kevin19821 的帖子
但是我想问一句,为什么不把这个程序修改一下,做成function,以后其他的数据处理时调用这个函数,来验证你做的是否正确呢?回复 #1 kevin19821 的帖子
对于一个实际信号m、n如何确定呢? 假如不知道m,n的大小,可以用实验的方法来检测里面是否有此种频率的信号 大家可以参考<微弱振动信号的谐波小波频域提取>作者:李舜酩不过他的文章在进行弱信号重构的时候,只能保证频率和相位,不能保证幅值,这正是我现在要做的
回复 #5 kevin19821 的帖子
期待你的成果,很有意义啊回复 #1 kevin19821 的帖子
感谢楼主的分享[ 本帖最后由 zhangnan3509 于 2007-8-18 14:25 编辑 ] 我现在在研究
[ 本帖最后由 zhangnan3509 于 2007-8-18 14:25 编辑 ] 感谢楼主
建议使用频率搜索的办法提取频率,然后构造谐波小波窗 不知楼主最近进展如何?希望楼主与大家分享 不是特别明白,请楼主解释下(412)(413)(414)图的意义 我编写的是基于FFT的你把基于FFT的快速算法看东就知道了 再问下,M、N可以随便取还是必须是2的次方? 最后的FIGURE2上的图就是函数在m=148、n=152范围内的谐波变换后得实部与虚部吧,不好意思,本人这方面不太懂,但毕业设计是做这个的,麻烦请教一下 楼主最好把程序说明一下啊。
页:
[1]
2