统计信号处理软件包

statsWaveletFilt的Python项目详细描述


统计处理:python统计信号处理包

用统计方法构造小波系数滤波接口(使用pywavelts)的包

开始

首先,您可以导入一些模块,如:

importpywtimportnumpyasnpimportstatsWaveletFilt.filtrationasfilimportstatsWaveletFilt.signalsassigimportstatsWaveletFilt.miscellaneousasmisc

然后按照以下步骤进行过滤:

第一步:信号建模

在许多关于过滤和/或误差估计的测试中,文章中都给出了一个已知的理想信号,如何显示上面的代码:

importmatplotlib.pyplotaspltdimension=1024t,idealSignal=sig.dopplerFunction(dimension)plt.plot(t,idealSignal,'k-')plt.show()

这个包还支持另外三个理想信号:heavsinesig.heavsineFunction())、bumpsig.bumpFunction())和blocksig.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模块中建模的所有信号。

参考文献

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java:在迭代器类型(接口/实现类)之间转换?   java“Click Method”不断返回“Stale Element Exceoption”?   Android应用程序/进程的java生命周期?   java在发布消息时收到“无法识别的Windowssocket错误:0:recv失败”   java如何返回第二个值   java将基本授权头添加到一些请求中   使用改型安卓的java Post请求错误   PropertyPlaceHolderConfigure位置内的java Spring占位符   java是导入com的工具。谷歌。安卓gms。gcm无法解决,Google Play服务已经安装   java如何获取JSON数据的多个可选值?   java如何使用ApachePOI从word中的形状读取文本   安卓 java。Eclipse中的lang.NoClassDefFoundError,但不适用于Ant   如何在Java中用stream()将Map<v1,Set<v2>>转换为Map<v2,Set<v1>>   循环在java中循环时,如何从数组列表中删除某些内容?