马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
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');
|