小波去噪
控件的实例DyadicAnalysis
和DyadicSynthesis
从信号中去除噪声的系统对象。
介绍
小波在信号去噪中有着重要的应用。经过小波分解后,高频子带包含了大部分的噪声信息和很少的信号信息。在这个例子中,软阈值被应用于不同的子带。高频子带阈值设置为高,低频子带阈值设置为低。
初始化
在处理循环中使用System对象之前创建和初始化它们对于获得最佳性能至关重要。
负载dspwlets;%负载小波系数和噪声信号阈值= [3 2 1 0];
创建一个SignalSource
系统对象输出噪声信号。
signalGenerator = dsp.SignalSource(噪声)。的,64);
创建和配置DyadicAnalysisFilterBank
系统对象对信号进行小波分解。
dyadicAnalysis = dsp。DyadicAnalysisFilterBank(…“CustomLowpassFilter”lod,…“CustomHighpassFilter”藏,…“NumLevels”3);
创建三个延迟
系统对象补偿由小波分量引入的系统延迟。
delay1 = dsp.Delay(3*(length(lod)-1));delay2 = dsp.Delay(length(lod)-1);delay3 = dsp.Delay(7*(length(lod)-1));
创建和配置DyadicSynthesisFilterBank
系统对象用于小波重构信号。
dyadicSynthesis = dsp。DyadicSynthesisFilterBank(…“CustomLowpassFilter”不要生气,…“CustomHighpassFilter”雇佣,…“NumLevels”3);
创建时间范围系统对象来绘制原始,去噪和残余信号。
范围= dsp。TimeScope (“名字”,小波去噪的,…“SampleRate”fs,…“时间间隔”13岁的…“NumInputPorts”3,…“LayoutDimensions”(3 - 1),…“TimeAxisLabels”,“底”,…“TimeSpanOverrunAction”,“滚动”);pos = scope.Position;范围。位置= [pos (1) pos (2) - (0.5 * pos (4)) 0.9 * pos (3) 2 * pos (4)];%设置每次显示的属性范围。ActiveDisplay = 1;范围。Title =输入信号的;范围。ActiveDisplay = 2;范围。Title =的去噪信号;范围。ActiveDisplay = 3;范围。Title =“剩余信号”;
流处理循环
创建一个处理循环来对输入信号进行降噪。这个循环使用上面实例化的System对象。
为ii = 1:length(noisdopp)/64 sig = signalGenerator();%输入噪声信号S = dyadicAnalysis(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, Threshold(1));S2 = dspDeadZone(S2, Threshold(2));S3 = dspDeadZone(S3, Threshold(3));S4 = dspDeadZone(S4, Threshold(4));%双进合成(在连接子带上)S = dyadicSynthesis([S1;S2;S3;S4));Sig_delay = delay3(sig);延迟以补偿分析/合成。Error = sig_delay - S;%绘制结果scope(sig_delay, S, Error);结束释放(范围);
总结
本例使用了信号处理系统对象,如DyadicAnalysisFilterBank
和DyadicSynthesisFilterBank
使用用户指定的阈值对噪声信号进行降噪。“输入信号”窗口显示原始带噪信号,“去噪信号”窗口显示噪声抑制后的信号,“残留信号”窗口显示原始信号与去噪信号之间的误差。
这个话题有帮助吗?