此程序实现的是将 50HZ 和 100HZ 正弦波分离的程序。并对小波谱分析的实现给出了启发性程序。由于最
近太忙,无法解释其中的理论,紧把程序和图形贴出来,供大家讨论和批评指正。
程序如下:
%% 本程序实现小波用作谱分析
clc;clear;
%% 1.正弦波定义
f1=50; % 频率 1
f2=100; % 频率 2
fs=2*(f1+f2); % 采样频率
Ts=1/fs; % 采样间隔
N=120; % 采样点数
n=1:N;
y=sin(2*pi*f1*n*Ts)+sin(2*pi*f2*n*Ts); % 正弦波混合
figure(1)
plot(y);
title('两个正弦信号')
figure(2)
stem(abs(fft(y)));
title('两信号频谱')
%% 2.小波滤波器谱分析
h=wfilters('db30','l'); % 低通
g=wfilters('db30','h'); % 高通
h=[h,zeros(1,N-length(h))]; % 补零(圆周卷积,且增大分辨率变于观察)
g=[g,zeros(1,N-length(g))]; % 补零(圆周卷积,且增大分辨率变于观察)
figure(3);
stem(abs(fft(h)));
title('低通滤波器图')
figure(4);
stem(abs(fft(g)));
title('高通滤波器图')
%% 3.MALLET 分解算法(圆周卷积的快速傅里叶变换实现)
sig1=ifft(fft(y).*fft(h)); % 低通(低频分量)
sig2=ifft(fft(y).*fft(g)); % 高通(高频分量)