⛄一、小波变换简介
小波变换是从20世纪80年代起逐渐发展成熟的一项数学应用技术,具有对时间—频率的双重分析和多分辨率分析能力,目前已经广泛应用于图像处理、模式识别等多个领域。小波变换的窗口大小固定但形状可改变,因此能够满足时域—频域局部化分析要求[22]。离散小波变换比连续小波变换的去噪效果更好,更适用于实际应用。
小波变换首先通过分解信号,使信号的能量集中在一些大的小波系数中,而噪声的能量分布于整个小波域内;然后通过阈值降噪,选择合适的阈值将有用信号的系数保留,将噪声信号的系数置零,从而去除噪声;最后再对经过阈值降噪后的系数进行重构,得到去除噪声后的信号。
常用的小波基函数有Meyer小波、Coiflet(coif N)小波、Daubechies(db N)小波等[9]。为得到较好的去噪效果,所选取的小波基函数在对心电信号进行分解时,应尽量保留心电信号中的有用分量,同时使噪声分解对应的小波系数差异尽可能大。Coiflet4小波基与心电信号的波形最为相似,同时与输出信号具有良好的相关性,重构后的信号信噪比大、均方误差小,因此本文选用Coiflet4小波基进行小波分解。
⛄二、部分源代码
% Extract Discrete Wavelet Transform (DWT) Feature
close all; clear; clc;
load dataset_BCIcomp1.mat
Y=y_train;
% Range is 0 to 9 sec
startS=0;
endS=9;
wStep=1;
wRange=9;
X=extractDWT(x_train,startS,endS,wStep,wRange);
T=extractDWT(x_test,startS,endS,wStep,wRange);
save dataDWT.mat X Y T
color_L = [0 102 255] ./ 255;
color_R = [255, 0, 102] ./ 255;
pos = find(Y==1);
plot(X(pos,1),X(pos,2),‘x’,‘Color’,color_L,‘LineWidth’,2);
hold on
pos = find(Y==2);
plot(X(pos,1),X(pos,2),‘o’,‘Color’,color_R,‘LineWidth’,2);
function X=extractDWT(x_train,startS,endS,wStep,wRange)
% x_train = input signal
% startS = from second
% endS = end second
% wStep = overlapping
% wRange = window size
FS=128;
N=size(x_train,3);
sz=floor((endS-(startS+wRange))/wStep)+1;
X=zeros(sz*140,2);
cn=0;
for i=1:N
for sig=startS:wStep:endS-wRangesW=sig*FS+1;eW=(sig+wRange)*FS;C3Sig=x_train(sW:eW,1,i);C4Sig=x_train(sW:eW,3,i);waveletFunction = 'db4';waveletLevel=3;[wCoe,L] = wavedec(C3Sig,waveletLevel,waveletFunction);C3D3 = detcoef(wCoe,L,3); % Mu[wCoe,L] = wavedec(C4Sig,waveletLevel,waveletFunction);C4D3 = detcoef(wCoe,L,3); % Mu
⛄三、运行结果
⛄四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1]宋玉龙,赵冕,郑威.基于小波变换和样本熵的脑电信号癫痫特征提取[J].计算机与数字工程. 2020,48(06)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除