%%%%%%%%%%%%%%%Birge-Massart策略阈值降噪
%基于小波变换的心电信号的降噪
ecg=fopen('100.dat','r')% 调用心电数据库 r为只读,ecg是打开文件的识别符
N=1201%常数赋值,要读数据个数
data=fread(ecg,N,'int16')%从一个流中读N个数据,数据格式是int16,16进制整数
data=data/10000%数据缩小10000倍
fclose(ecg)%关闭打开的文件
x=data%把数据转赋给x变量
wavename='db5'%db5是小波名
level=4%4级分解
[c,l]=wavedec(x,level,wavename)%4级小波分解,c保存各级分解系数,l是薄记矩阵,保存各级的系数的个数
alpha=1.5%1.5用于信号压缩,3用于降噪
sorh='h'%为硬阈值
[thr,nkeep]=wdcbm(c,l,alpha)%使用Birgé-Massart策略计算一维小波分解或压缩的阈值thr和各级的系数个数nkeep
[xc,cxc,lxc,perf0,perfl2]=wdencmp('lvd',c,l,wavename,level,thr,sorh)%小波压缩重构后的图像
t1=0:0.004:(length(x)-1)*0.004%一行数据
figure(4)%打开一个图形窗口
subplot(211)%子图1
plot(t1,x)%画图形
title('从人体采集的原始的ECG信号')%加上子图名称
subplot(212)%子图2
plot(t1,xc)%画图形
title('Birge-Massart策略阈值降噪后的ECG信号(wname=db5 level=4)')%加上子图名称
小波图像去噪的方法大概分为3类1:基于小波变换摸极大值原理
2:基于小波变换系数的相关性
3:基于小波阈值的去噪。
基于小波阈值的去噪方法3个步骤:
1: 计算含噪声图像的小波变换。选择合适的小波基和小波分解层数J,运用Matlab 分解算法将含有噪声图像进行J层小波分解,得到相应的小波分解系数。
2:对分解后的高频系数进行阈值量化,对于从1 到J的每一层,选择一个适当的阈值和合适的阈值函数,将分解得到的高频系数进行阈值量化,得到估计小波系数。
3:进行小波逆变化,根据图像小波分解后的第J层,低频 系数(尺度系数)和经过阈值量化处理的各层高频系数(小波系数),运用Matlab重构算法进行小波重构,得到去噪后的图像。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)