问题标签 [pywavelets]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2020 浏览

python - 时变频率的频谱图与比例图

我正在比较 FFT 与 CWT 的特定信号。

我不清楚如何从 CWT 的相应比例图中读取相应的频率和幅度。此外,我的印象是 CWT 很不精确?

频谱图在预测精确频率方面似乎相当不错,但对于 CWT,我尝试了许多不同的小波,结果是相同的。

我监督了什么?这不是解决这个问题的合适工具吗?

下面,您可以找到我的示例源代码和相应的绘图。

阴谋

0 投票
0 回答
465 浏览

python - 如何从一维离散小波变换中获得特定频带系数?

我需要将信号的频谱信息从 30 秒窗口汇总到频谱带中。Delta (1-4hz)、Theta (5-8hz)、Alpha (9-12hz) 等。当使用连续小波变换 (cwt) 时,我会得到与特定频率相对应的系数,我可以总结这些系数以获得平均功率每个频段。

离散小波变换 (dwt) 改为返回“近似值”和“细节”。我不明白如何将这些系数映射到我的光谱带。我知道随着级别数的增加,频率分辨率也会增加,所以如果我的采样率为 512,则系数应该如下映射..

我可以总结任何这些波段中的近似系数或细节系数,但是如果我需要特定的波段6hz - 20hz怎么办?如果我知道哪些系数对应于什么频率,我可以快速映射它。

我在 python 中使用 PyWavelets,我的 cwt 代码如下

我认为 Daubechies 小波是最接近 Morlet 的离散小波。

0 投票
1 回答
1163 浏览

python - 香农熵优化 WaveletPacket Tiling 的 Python/PyWavelet 实现

我需要为小波包树运行香农(或任何此类度量)熵最小化,但我在找出算法时遇到问题。有时这被称为优化频率空间中的瓦片。我可以按照比例解决问题,但我找不到解决与后续比例重叠冲突的方法。生成的尺度图中的空白是否应该简单地用第一个解析层的结果填充?

我试过使用 PyWavelet 的 pywt.WaveletPacket,并在谷歌上搜索解决了这个问题的人,但我似乎找不到基于 Python 的答案。我得到的最接近的是小波工具箱中 Matlab 的 besttree 函数,但我没有那个工具箱的许可证,所以我不能简单地 MCC-it 并在 python 中运行。

那时,我不知道是沿着一个节点继续并追溯到它的父节点,还是沿着给定的级别追踪是否更好。

我一直在使用 Addison 的“Illustrated Wavelet Transform Handbook”作为技术参考。我正在尝试复制第 170 页上的图 3.41 中显示的过程,或类似于以下链接: https ://www.researchgate.net/figure/TF-tiling-comparison-between-aa-DWT-and-ba -sample-WP-decomposition_fig1_4128902

0 投票
5 回答
2194 浏览

python - 如何使用 PyWavelets 读取图像?

我需要使用 pyWavelet,即 pywt 来读取我的图像为它制作小波,下面的示例仅用于加载相机图像,如何使用我计算机路径中的另一个图像?

0 投票
2 回答
816 浏览

python - 为什么无论阈值水平如何,小波去噪都会产生相同的结果?

我正在尝试对金融时间序列数据进行去噪(逐秒)。我有一个很长的时间序列,但我一直在使用 100,000 次观察来测试小波去噪 (haar) 的工作情况。它没有。

无论我做什么,重建的信号最终总是几乎与原始信号相同。显然,我想保留原始信号,但我觉得这个序列只是没有被去噪——一个金融时间序列,其唯一的噪声出现在几秒钟​​的分辨率中?此外,即使在最小的时间尺度上,重建图和原始图的图也几乎相同。

我尝试改变母小波、时间序列长度、完成时间序列重建的模式(软与硬),显然,我已经弄乱了阈值本身。我从 sqrt(2*log(len(signal))) 的推荐/标准阈值开始,但这对我几乎没有任何作用,所以我逐渐增加它,直到我达到完全荒谬的 2*len(signal)* *2——它应该使图形变得面目全非,但基本上什么也没做。

我预计重建的信号会与原始信号有很大不同(如平滑、去噪、更少……与原始信号相同),但事实并非如此。在最小的尺度上(想想在 100,000 秒的尺度上每 10 或 20 秒一次),有一些非常小的平滑,基本上只是忽略了大小为 0.01 的峰和谷(可能的最小变化),但它几乎可以忽略不计。

我期待一个信号,嗯,我不知道——去噪了?难道我做错了什么?

0 投票
1 回答
852 浏览

tensorflow - 如何使用 Keras 或 tensorflow 为小波神经网络编写自定义小波激活函数

尝试使用 Keras/Tensorflow 构建小波神经网络。对于这个神经网络,我应该使用小波函数作为我的激活函数。

我尝试通过简单地调用创建自定义激活函数来做到这一点。但是,反向传播似乎存在问题

完整运行代码时出现以下错误

SyntaxError: invalid syntax

如果我跑

我收到以下错误 SyntaxError: unexpected EOF while parsing

如果我跑

model = Sequential() model.add(Dense(12, input_dim=8, activation=custom_activation))

我收到以下错误

TypeError: Cannot convert DType to numpy.dtype

0 投票
1 回答
732 浏览

python - 如何找到 DWT 信号变换的频段?

我是信号处理的新手,我想找出 Daubechies 小波“db4”变换输出的每个电平的频率范围。转换是使用 PyWavelets 完成的。我正在使用 python,下面的代码输出 5 个细节级别和 1 个近似值,但是我不确定每个级别描述的频率范围。

0 投票
0 回答
74 浏览

python - 如何从 DWT 细节系数重建 2D 图像?

我想从 DWT 细节系数重建 2D 图像,如下图所示,我如何使用 python 做到这一点?[DWT 详细系数(1 到 5 级)] https://i.stack.imgur.com/c8MeM.jpg

0 投票
1 回答
134 浏览

python - Python SVM 分类器 - 输入 NaN 和数据形状的问题

我正在尝试使用 ECG 数据构建二进制 SVM 分类器来诊断睡眠呼吸暂停。使用 16,000 个奇数输入,我正在执行小波变换,手动提取 HRV 特征并将它们存储在特征列表中,并将该列表输入分类器。

在我使用小波变换步骤对其进行预处理之前,这对原始数据工作得很好——特征列表中的一些值在nan变换之后变成了,这意味着我在这行代码中得到了这个错误:

所以我执行了这一步:

这解决了 ValueError 但删除“错误”输入意味着 X_train 和 y_train 的形状不匹配:

我正在努力弄清楚如何从 y_train 中删除相应的值以匹配样本?或者有更好的方法吗?

如果您需要有关代码的更多信息,请告诉我。

0 投票
1 回答
407 浏览

python - Do we apply fourier/wavelet transform to entire time series or only the training set for forecasting?

I was trying to implement the WSAE-LSTM model from the paper A deep learning framework for financial time series using stacked autoencoders and long-short term memory . In the first step, Wavelet Transform is applied to the Time Series, although the exact implementation is not outlined in the paper.

The paper hints at applying Wavelet Transform to the whole dataset. I was wondering if this leaks data from testing to training? This article also identifies this problem.

From the article-

I’m sure you’ve heard many times that whenever you’re normalizing a time series for a ML model to fit your normalizer on the train set first then apply it to the test set. The reason is quite simple, our ML model behaves like mean reverter so if we normalize our entire dataset in one go we’re basically giving our model the mean value it needs to revert to. I’ll give you a little clue if we knew the future mean value for a time series we wouldn’t need machine learning to tell us what trades to do ;)

It’s basically the exact same issue as normalising your train and test set in one go. You’re leaking future information into each time step and not even in a small way. In fact you can run a little experiment yourself; the higher a level wavelet transform you apply, miraculously the more “accurate” your ML model’s output becomes.

Can someone tell me if Wavelet Transform "normalizes" the dataset which would lead to data leakage when forecasting? Should it be applied to the whole dataset or only the training dataset?