关于小波变换,我们当然可以选择速度更快地方式来使用它。和python相比,C++编译后的代码在对同一组参数配置并且处理同一组数据,在没有优化的情况下,处理速度可以快达10倍上,均不包括把结果写入csv文件步骤的时间。下图中的19.9s是指被处理的数据时长。

C++离散小波变换对模拟信号的分解和重建,以及与原信号的比较
重建信号和原信号完全一致.

功能:该程序支持以下小波变换
| 'db2', 'db4', 'db8', 'db10', 'db12', 'db14', 'db16', 'db18', 'db20', |
| 'sym2', 'sym4', 'sym6', 'sym8', 'sym10', 'sym12', 'sym14', 'sym16', 'sym18', 'sym20', |
| 'coif1', 'coif2', 'coif3', 'coif4', 'coif5', |
| 'bior1.1', 'bior1.3', 'bior1.5', |
| 'bior2.2', 'bior2.4', 'bior2.6', 'bior2.8', |
| 'bior3.1', 'bior3.3', 'bior3.5', 'bior3.7', 'bior3.9', |
| 'bior4.4', 'bior5.5', 'bior6.8', |
| 'rbio1.1', 'rbio1.3', 'rbio1.5', |
| 'rbio2.2', 'rbio2.4', 'rbio2.6', 'rbio2.8', |
| 'rbio3.1', 'rbio3.3', 'rbio3.5', 'rbio3.7', 'rbio3.9', |
| 'rbio4.4', 'rbio5.5', 'rbio6.8', |
| 'haar', 'db1', |
之前基于Pywt实现的心率检测plt输出:

基于C++版本的DWT小波变换检测心率的excel处理结果:

C++的DWT和Python的三种小波变换检测心率检测比较
结果是一致的,只是在保存时有效位数选择不同。
| C++ | Python | ||
| DWT(bpm) | CWT(bpm) | SWT(bpm) | DWT(bpm) |
| 92.7039 | 92.7 | 92.7 | 92.7 |
| 92.1109 | 92.1 | 92.1 | 92.1 |
| 91.7847 | 91.8 | 91.8 | 91.8 |
| 93.6416 | 93.6 | 93.6 | 93.6 |
| 93.6416 | 93.6 | 93.6 | 93.6 |
| 94.0493 | 94 | 94 | 94 |
| 91.0112 | 91 | 91 | 91 |
| 90.8836 | 90.9 | 90.9 | 90.9 |
| 89.8752 | 89.9 | 89.9 | 89.9 |
| 90.2507 | 90.3 | 90.3 | 90.3 |
| 89.3793 | 89.4 | 89.4 | 89.4 |
| 89.1334 | 89.1 | 89.1 | 89.1 |
| 87.924 | 87.9 | 87.9 | 87.9 |
| 87.0968 | 87.1 | 87.1 | 87.1 |
| 86.4 | 86.4 | 86.4 | 86.4 |
| 86.285 | 86.3 | 86.3 | 86.3 |
| 86.747 | 86.7 | 86.7 | 86.7 |
| 87.3315 | 87.3 | 87.3 | 87.3 |
| 86.8633 | 86.9 | 86.9 | 86.9 |
| 86.285 | 86.3 | 86.3 | 86.3 |
耐心的你看到这里了,是不是以为碰到广告了?非也。 小编觉得不能每次都毫不顾忌各位的看法就发代码。是否需要在某个时候发布这个C++的DWT源码,还是看各位看官的想法。小编打算在集齐300个要求公布的需求后再正式发布,没有设置投票截止时间。什么时候够数,什么时候发布源码。
std::string wavelet_name = "db4"; WaveletDecomposer myWavelet(wavelet_name); auto mres = myWavelet.multilevel_dwt(x, levels); std::vector源码的功能可能还不够完善,但是已经可以根据选择的小波名称对信号数据进行正常的分解和重建了,所以小编还用它来测试验证了一下心率的检测(参考上面图表及说明)。x_rec_custom = myWavelet.multilevel_idwt(mres.last_approx, mres.details, mres.lengths);
全部0条评论
快来发表一下你的评论吧 !