统计信号处理软件包

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 Hibernate:合并并删除,而不是从数据库中删除实体对象   java如何在WebFilter中有条件地从Mono返回?   java调用mysql c3p0函数   可执行jar Java jar文件加载错误:无法找到或加载主类。类导致的错误:java。lang.ClassNotFoundException:某些东西。班   java如何减少/更改爬网后的延迟?   从其他语言(如Java、PHP、Perl、Python等)调用C/C++代码的最佳方式是什么?   java如何模拟影响对象的void返回方法   当我试图在ubuntu上启动JavaScala时,它抛出了一个异常   java如何正确输出游戏   理解java和C++背景下的JavaScript原型   oracle如何将Java函数转换为postgresql函数   多线程为什么我的java服务器程序在超时后不退出?   java如何使listView中的按钮在单击时工作?   试图将这个嵌套的java forloop转换为python,但我不知道如何转换。有没有一种方法可以像这样为循环执行if语句?   java幂函数在计算器中的应用   如何在java中滚动浏览mysql数据库   在Spring Boot应用程序的JUnit测试中,java没有符合自动连线JPA存储库要求的bean   java如何使用扩展类的JPanel对象?