统计信号处理软件包
statsWaveletFilt的Python项目详细描述
统计处理:python统计信号处理包
用统计方法构造小波系数滤波接口(使用pywavelts)的包
开始
首先,您可以导入一些模块,如:
importpywtimportnumpyasnpimportstatsWaveletFilt.filtrationasfilimportstatsWaveletFilt.signalsassigimportstatsWaveletFilt.miscellaneousasmisc
然后按照以下步骤进行过滤:
第一步:信号建模
在许多关于过滤和/或误差估计的测试中,文章中都给出了一个已知的理想信号,如何显示上面的代码:
importmatplotlib.pyplotaspltdimension=1024t,idealSignal=sig.dopplerFunction(dimension)plt.plot(t,idealSignal,'k-')plt.show()
这个包还支持另外三个理想信号:heavsine(sig.heavsineFunction()
)、bump(sig.bumpFunction()
)和block(sig.blockFunction()
)。
再加上一种噪声,通常是gaussian或者,也称为normal。
noise=np.random.normal(0,.02,size=dimension)noisySignal=idealSignal+noiseplt.plot(t,noisySignal,'k-')plt.show()
第二步:小波变换
让我们使用pywt.wavedec
函数来实现这一点。有了它,你可以1)对有噪声的信号进行小波变换,2)选择使用小波函数('haar', 'db', 'gaus', 'mexh'
)和3)选择任何你想评估变换的级别。
noisyCoeff=pywt.wavedec(noisySignal,'db8',level=5)
第一个位置= noiseCoeff[0]
具有最后一个nével的标度系数。连续的元素= noiseCoeff[1:]
具有从最后到第一级变换的小波系数。
使用misc.showWaveletCoeff
函数可以显示转换返回的所有系数。
misc.showWaveletCoeff(noisyCoeff,title='Noisy Coefficients')
第三步:过滤
使用fil.filtration
函数,您可以放置您的1)用于过滤的系数,2)选择方法('visu', 'sure', 'bayes', 'spc'
),如有必要,3)设置方法自己的参数(更多详细信息请参阅文档)。
filtrateCoeff,limiars=fil.filtration(noisyCoeff,method='visu')
同样,您可以在过滤前后显示小波系数,使用misc.showWaveletCoeff
函数使用limiar。
misc.showWaveletCoeff(noisyCoeff,threshold_value=limiars,title='Noisy Coefficients')print('==============================================================')misc.showWaveletCoeff(filtrateCoeff,threshold_value=limiars,title='Filtered Coefficients')
第四步:恢复小波变换
使用pywt.waverec
函数,我们可以重新生成信号。
filtrateSignal=pywt.waverec(filtrateCoeff,'db8')plt.plot(t,filtrateSignal,'k-')plt.show()
第五步:子午线图
使用sig.differential_snr_dB
我们可以使用不同形式的merith图来评估信号的snr或cnr(请参阅文档中的更多内容)。
sig.differential_snr_dB(noisySignal,filtratedSignal,method='variances',idealSignal=idealSignal)
附录:其他
misc.generateData
函数使用此处显示的具有不同噪声方差的信号生成数据,并以.npy
格式保存。misc.normalizeData
函数规范化最小值和最大值之间的数据,该函数用于在sig模块中建模的所有信号。
参考文献
- DONOHO, JOHNSTONE (1992), Ideal Spatial Adaptation by Wavelet Shrinkage
- DONOHO, JOHNSTONE (1994), Adapting to Unknown Smoothness via Wavelet Shrinkage
- CHANG, YU, VETTERLI (2000),Adaptive Wavelet Thresholding for Image Denoisingand Compression
- BAYER, KOZAKEVICIUS (2010), SPC-Threshold: Uma Proposta de Limiarização para Filtragem Adaptativa de Sinais
- KOZAKEVICIUS, BAYER (2014), Filtragem de sinais via limiarização de coeficientes wavelet