ljj722 发表于 2012-3-18 17:12

怎么用复值Morlet组合小波提取信号的包络?

有文献说可以用复值Morlet组合小波提取信号的包络,自己用matlab写了个程序,运行结果跟包络相差十万八千里,不知道问题出在哪儿了,来论坛求助了!

clc;clear all;close all;format long;
Fs=10^5;                            %采样率
dt=1/Fs;                            %采样时间周期
f=2*10^3;                           %信号载频
N=801;                              %样本点数
t=(0:1:(N-1))*dt;                   %时间
g=1.333-cos(0.2*2*pi*f*t+(pi/2));   %包络
sig=g.*sin(2*pi*f*t);                %仿真信号
%figure(1);plot(t,y1,'r');
%构造复值Morlet组合小波
lb=-8;            %构造复值Morlet组合小波时用到的参数lb(left boundary)
ub=8;               %构造复值Morlet组合小波时用到的参数ub(right boundary)
t2=-8:dt:8;
n=length(t2);       %构造复值Morlet组合小波时用到的点数
fb=2*0.2^2;         %构造复值Morlet组合小波时用到的带宽参数
CMMC=0;
fc=2*10^3-10:1:2*10^3+10;            %小波中心频率,步长为1 Hz
for i=1:1:length(fc)
    =cmorwavf(lb,ub,n,fb,fc(i));
    CMMC=CMMC+psi;
end
%figure(2);subplot(2,1,1);plot(x,real(CMMC));
%subplot(2,1,2);plot(x,imag(CMMC));
%复值Morlet组合小波实部的单边振幅谱
L=length(real(CMMC));
Y=fft(real(CMMC),L)/L;
f=Fs/2*linspace(0,1,L/2+1);
mag=2*abs(Y(1:L/2+1));
%figure(2);plot(f,mag);
%将信号的FFT与复值Morlet组合小波的FFT相乘后取IFFT,再取模以提取包络。
env=abs(ifft(fft(sig,L).*fft(CMMC,L),L));
figure(3);subplot(2,1,1);plot(t,g,'g');subplot(2,1,2);plot(env,'b');


ljj722 发表于 2012-3-18 21:52

方法参考《Morlet组合小波及其在鱼雷电磁引信信号处理中的应用》这篇论文,这个复值Morlet小波不怎么会用,琢磨了两个礼拜了。

ljj722 发表于 2012-3-20 13:37

貌似复值Morlet小波基函数的FB跟FC取固定值,比如FB=4,FC=2,然后根据信号的中心频率及采样率选取尺度,不知道是不是啊?

longxiaolong 发表于 2013-5-5 21:39

ljj722 发表于 2012-3-20 13:37 static/image/common/back.gif
貌似复值Morlet小波基函数的FB跟FC取固定值,比如FB=4,FC=2,然后根据信号的中心频率及采样率选取尺度,不 ...

我也在研究这个,也是不知道怎么编程序,急呀!

woshiqiao 发表于 2015-5-27 16:11

{:{39}:}{:{39}:}对小波母函数的选择向来不清楚。。。

liu@yanyong 发表于 2015-7-7 16:19

{:{39}:}{:{39}:}
页: [1]
查看完整版本: 怎么用复值Morlet组合小波提取信号的包络?