matlab 硬阈值,matlab小波除噪,为何硬阈值和软阈值除躁信噪比一样了?

matlab运行程序:

t=linspace(0,2*pi,1024);

f1=sin(1/2*t).*cos(15*t);

subplot(4,2,1);plot(f1);  title('原始信号'); axis([1,1024,-1,1]);

l=length(f1);

noise=2*rand(1,l)-1;

f2=0.5*noise+f1;

snr=SNR_singlech(f1,f2) %信噪比

subplot(4,2,2);plot(f2);title('含噪信号'); axis([1,1024,-1,1]);

%使用小波函数db6对信号进行4层分解

[c,l]=wavedec(f2,4,'db7');

%估计尺度1的噪声标准偏差

sigma=wnoisest(c,l,1)

alpha=2;

%获取去噪过程中的阈值

thr=wbmpen(c,l,sigma,alpha);

keepapp=1;

%对信号进行去噪

f3=wdencmp('gbl',c,l,'db7',4,thr,'s',keepapp);

subplot(4,2,3);plot(f3);title('去噪信号'); axis([1,1024,-1,1]);

snr=SNR_singlech(f1,f3) %信噪比

f4=wdencmp('gbl',c,l,'db7',4,thr,'h',keepapp);

subplot(4,2,4);plot(f4);title('去噪信号'); axis([1,1024,-1,1]);

snr=SNR_singlech(f1,f4) %信噪比

信噪比函数SNR_singlech(I,In)

function snr=SNR_singlech(I,In)

% 计算信噪比函数

% I :original signal

% In:noisy signal(ie. original signal + noise signal)

snr=0;

Ps=sum(sum((I-mean(mean(I))).^2));%signal power

Pn=sum(sum((I-In).^2));           %noise power

snr=10*log10(Ps/Pn);

运行结果

snr =

4.7471

sigma =

0.3088

snr =

17.4639

snr =

17.4639

2013-5-7 12:24 上传

b4d287d1aacbf0cf95a77c41289acfe6.gif

c5006d1a5b4047f80d42a7082635a87b.gif

波形

53322b3ffeeff6cc4d40900eafcb782d.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值