小波去噪
此示例显示了如何使用dsp.dyadicanalysisfilterbank.
和dsp.dyadicsynthesisfilterbank.
系统对象从信号中清除噪声。
介绍
小波在信号去噪中具有重要应用。在小波分解之后,高频子带包含大多数噪声信息和很少的信号信息。在该示例中,软阈值处理应用于不同的子带。阈值被设置为高频子带的更高值,以及低频子带的较低值。
初始化
在处理循环中使用之前创建和初始化系统对象对于获得最佳性能至关重要。
加载dspwlets.;%负载小波系数和噪声信号阈值= [3 2 1 0];
创建一个dsp.signalsource.
系统对象™输出嘈杂信号。
signalgenerator = dsp.signalsource(noisdopp。',64);
创建和配置dyadicanalysisfilterbank.
用于信号的小波分解的系统对象。
Dyadicanalysis = dsp.dyadicanalysisfilterbank(......'customlowpassfilter',lod,......'customhighpassfilter',隐藏,......'numlevels',3);
创造三个延迟
系统对象可以补偿小波组件引入的系统延迟。
delay1 = dsp.delay(3 *(长度(lod)-1));delay2 = dsp.delay(长度(lod)-1);delay3 = dsp.delay(7 *(长度(lod)-1));
创建和配置DyadicSynthesisFilterBank.
信号小波重建的系统对象。
Dyadicsynthesis = DSP.DyAdicSynthesisFilterBank(......'customlowpassfilter',lor,......'customhighpassfilter',赫尔,......'numlevels',3);
创建一个Timescope.
系统对象绘制原始,去噪和剩余信号。
范围= timescope('姓名'那'小波去噪'那......'采样率',fs,......'时间跨度',13,......'numinputports',3,......'layoutdimensions',[3 1],......'timeaxislabels'那'底部'那......'timespanoverrunaction'那'滚动');pos = scope.position;scope.position = [POS(1)POS(2) - (0.5 * POS(4))0.9 * POS(3)2 * POS(4)];%设置每个显示的属性scope.activeyplay = 1;scope.title ='输入信号';scope.activedisplay = 2;scope.title ='去噪';scope.activedisplay = 3;scope.title ='残留信号';
流处理循环
创建一个处理循环以将输入信号代替。此循环使用上面实例化的系统对象。
为了II = 1:长度(noisdopp)/ 64 sig = signalgenerator();%输入噪声信号s =二元分析(sig);%二元分析%分为四个子带s1 = s(1:32);s2 = s(33:48);s3 = s(49:56);S4 = S(57:64);延迟补偿二元分析过滤器s1 = delay1(s1);s2 = delay2(s2);s1 = dspdeadzone(S1,阈值(1));s2 = dspdeadzone(S2,阈值(2));s3 = dspdeadzone(S3,阈值(3));s4 = dspdeadzone(S4,阈值(4));%Dyadic合成(在级联子带上)s = dyadicsynthesis([s1; s2; s3; s4]);sig_delay = delay3(sig);延迟补偿分析/合成。error = sig_delay - s;%绘制结果范围(sig_delay,s,错误);结尾释放(范围);
概括
此示例使用信号处理系统对象,例如dyadicanalysisfilterbank.
和DyadicSynthesisFilterBank.
使用用户指定的阈值来表示噪声信号。输入信号窗口显示原始噪声信号,即去噪信号窗口显示噪声抑制后的信号,残差信号窗口显示原始和去噪信号之间的误差。