www.gusucode.com > wavelet 源码程序 matlab案例代码 > wavelet/ICWTRemovingTimeLocalizedFreqComponentExample.m

    %% Remove Time-Localized Frequency Components
% Create a signal consisting of exponentially weighted sine waves. The
% signal has two 25-Hz components -- one centered at 0.2 seconds and one 
% centered at 0.5 seconds. It also has two 70-Hz components -- one 
% centered at 0.2 and one centered at 0.8 seconds. The first 25-Hz and 
% 70-Hz components co-occur in time.

t = 0:1/2000:1-1/2000;
dt = 1/2000;
x1 = sin(50*pi*t).*exp(-50*pi*(t-0.2).^2);
x2 = sin(50*pi*t).*exp(-100*pi*(t-0.5).^2);
x3 = 2*cos(140*pi*t).*exp(-50*pi*(t-0.2).^2);
x4 = 2*sin(140*pi*t).*exp(-80*pi*(t-0.8).^2);
x = x1+x2+x3+x4;
plot(t,x)
grid on;
title('Superimposed Signal')

%%
% Obtain and display the CWT.

cwt(x,2000);
title('Analytic CWT using Default Morse Wavelet');

%%
% Remove the 25 Hz component which occurs from approximately 0.07 to 0.3
% seconds by zeroing out the CWT coefficients. Use the inverse CWT
% (<matlab:doc('icwt') |icwt|>) to reconstruct an approximation to the
% signal.

[cfs,f] = cwt(x,2000);
T1 = .07;  T2 = .33;
F1 = 19;   F2 = 34;
cfs(f > F1 & f < F2, t> T1 & t < T2) = 0;
xrec = icwt(cfs);
%%
% Display the CWT of the reconstructed signal. The initial 25-Hz component
% is removed.

cwt(xrec,2000)

%%
% Plot the original signal and the reconstruction.

subplot(2,1,1);
plot(t,x);
grid on;
title('Original Signal');
subplot(2,1,2);
plot(t,xrec)
grid on;
title('Signal with first 25-Hz component removed');

%%
% Compare the reconstructed signal with the original signal without the 
% 25-Hz component centered at 0.2 seconds.

y = x2+x3+x4;
figure;
plot(t,xrec)
hold on
plot(t,y,'r--')
grid on;
legend('Inverse CWT approximation','Original Signal Without 25-Hz');
hold off