• 大小: 8KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: Matlab
  • 标签: 小波  

资源简介

可以实现心电信号的对基线漂移的去除,里面关键的代码可以查看。

资源截图

代码片段和文件信息

 clc ;clear all; close all;
%--------------------------------------------------------------
sfreq=500;
M=dlmread(‘T103dat.txt‘);
%M=dlmread(‘ecg.txt‘);
[ECG]=Read500HzECGdat(M-1sfreq1024);%500Hz Ecg数据的转化
sfreq=250;
ECG=ECG(405000:4080002);%截取数据点405000到408000的数,第二列
 %ECG=ECG(50:8001);
%  plot(ECG)
 s=ECG;
 
 [CL] = wavedec(s11‘db8‘);%多级一维小波分解,返回小波信号x在N级分解,? N必须是一个严格的正整数(见WMAXLEV)。 
 %输出分解结构包含小波分解向量C和簿记向量L.对于[C,L] = wavedec(X,N,Lo_D,Hi_D),
 %Lo_D是分解低通滤波器
% Hi_D是分解高通滤波器。
%该结构组织为:
%C = [app。COEF(N)|。DET。 系数(N)| ... | det。COEF。(1)]
%L(1)=应用程序的长度。COEF。(N)
% L(i)= det的长度。 (N-i + 2),对于i = 2,...,N + 1
% L(N + 2)=长度(X)。
% a10 = appcoef(C L ‘db8‘10);
% d1 = detcoef(CL1);  
% d2 = detcoef(CL2);
% d3 = detcoef(CL3);
% d4 = detcoef(CL4);
A9 = wrcoef(‘a‘CL‘db8‘9);  % 从近似系数得到近似信号A
D1 = wrcoef(‘d‘CL‘db8‘1);  % 从细节系数得到细节信号D
D2 = wrcoef(‘d‘CL‘db8‘2);
D3 = wrcoef(‘d‘CL‘db8‘3);
D4 = wrcoef(‘d‘CL‘db8‘4);
D5 = wrcoef(‘d‘CL‘db8‘5);  % 从细节系数得到细节信号D
D6 = wrcoef(‘d‘CL‘db8‘6);
D7 = wrcoef(‘d‘CL‘db8‘7);
D8 = wrcoef(‘d‘CL‘db8‘8);
D9 = wrcoef(‘d‘CL‘db8‘9);

%wrcoef从一维小波系数重建单个分支。
%wrcoef重建一维信号的系数,
%?给出一个小波分解结构(C和L)和
%要么是指定的小波(‘wname‘,参见WFILTERS获取更多信息)
% 或指定的重建滤波器(Lo_R和Hi_R)。
% ?
% X = wrcoef(‘type‘,C,L,‘wname‘,N)计算的向量
% 基于小波的重构系数
% 分解结构[C,L](更多信息见WAVEDEC),
% ????在N级。“wname”是一个包含小波名称的字符串。
% ??
% ????参数“类型”决定是否近似
% (‘type‘=‘a‘)或细节(‘type‘=‘d‘)系数
% 重建。
% 当‘type‘=‘a‘时,允许N为0;除此以外,
% 严格的正数N是必需的。
% 级别N必须是一个整数,使得N <= length(L)-2。

% X = wrcoef(‘type‘,C,L,Lo_R,Hi_R,N)计算系数
% 如上所述,鉴于你指定的重建。
% ?
% X = wrcoef(‘type‘,C,L,‘wname‘)和
% X = wrcoef(‘type‘,C,L,Lo_R,Hi_R)重建系数
% 最大水平N =长度(L)-2。

s1=D1+D2+D3+D4+D5+D6+D7;


s2=smooth(ECG7‘sgolay‘);%平滑滤波



%index = 1:1024;
%x = leleccum(index);
%产生噪声信号

% init = 2055615866;
% randn(‘seed‘init);
% nx =s+18*randn(size(s));

%获取消噪的阈值
[thrsorhkeepapp] = ddencmp(‘den‘‘wv‘s1);

% ddencmp用于去噪或压缩的默认值。
% ????[THR,SORH,KEEPAPP,CRIT] = ddencmp(IN1,IN2,X)
% ????返回去噪或压缩的默认值,
% ????使用小波包或小波包,输入矢量
% ????或矩阵X,其可以是1-D或2-D信号。
% ????THR是门槛,SORH是软或硬
% ????阈值,KEEPAPP允许你保持近似
% ????系数和CRIT(仅用于小波包)
% ????是熵名(见WENTROPY)。
% ????IN1是“den”或“cmp”,IN2是“wv”或“wp”。
% ?
% ????对于小波(三个输出参数):
% ????[THR,SORH,KEEPAPP] = ddencmp(IN1,‘wv‘,X)
% ????返回用于去噪的默认值(如果IN1 =“den”)
% ????或压缩(如果IN1 =‘cmp‘)X.
% ????这些值可以用于WDENCMP。
% ?
% ????对于小波包(四个输出参数):
% ????[THR,SORH,KEEPAPP,CRIT] = ddencmp(IN1,‘wp‘,X)
% ????返回用于去噪的默认值(如果IN1 =“den”)
% ????或压缩(如果IN1 =‘cmp‘)X.
% ????这些值可以用于WPDENCMP。

%对信号进行消噪
xd = wdencmp(‘gbl‘s1‘db4‘2thrsorhkeepapp);
figure(3)
subplot(221);
plot(s);
title(‘原始信号‘);
subplot(222);
plot(s1);
title(‘含噪信号‘);
subplot(223);
plot(xd);
title(‘消噪后的信号‘);
subplot(224);
plot(s2);
title(‘平滑滤波信号‘);
% wdencmp使用小波去噪或压缩。
% ????wdencmp执行去噪或压缩过程
% ????信号或图像使用小波。
% ?
% ????[XC,CXC,LXC,PERF0,PERFL2] =
% ????wdencmp( ‘GBL‘,X, ‘wname‘,N,THR,SORH,KEEPAPP)
% ????返回输入的去噪声或压缩版本XC
% ????信号X(1-D或2-D)由小波系数获得
% ????使用全

评论

共有 条评论