声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2525|回复: 5

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

[复制链接]
发表于 2012-3-18 17:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
有文献说可以用复值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)
    [psi,x]=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');


回复
分享到:

使用道具 举报

 楼主| 发表于 2012-3-18 21:52 | 显示全部楼层
方法参考《Morlet组合小波及其在鱼雷电磁引信信号处理中的应用》这篇论文,这个复值Morlet小波不怎么会用,琢磨了两个礼拜了。
图片1.png
 楼主| 发表于 2012-3-20 13:37 | 显示全部楼层
貌似复值Morlet小波基函数的FB跟FC取固定值,比如FB=4,FC=2,然后根据信号的中心频率及采样率选取尺度,不知道是不是啊?
发表于 2013-5-5 21:39 | 显示全部楼层

我也在研究这个,也是不知道怎么编程序,急呀!
发表于 2015-5-27 16:11 | 显示全部楼层
对小波母函数的选择向来不清楚。。。
发表于 2015-7-7 16:19 | 显示全部楼层

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-5 18:45 , Processed in 0.081558 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表