Skip to main content

用于估计某些局部静止过程的 Wigner 谱的多锥窗方法的 Python 实现

项目描述

LSPOpt

构建和测试 覆盖状态 PyPI 版本 代码风格:黑色

该模块是[1]中描述的多锥窗口方法的 Python 实现,用于估计某些局部静止过程的 Wigner 谱。

[1]的摘要:

本文研究了为一类局部平稳过程 (LSP) 提供均方误差最佳 Wigner 谱估计的时间离散多锥体。评估了 LSP 时变 Wigner 谱估计的准确性,并与其他常用方法进行了比较。最优多锥度也用 Hermite 函数逼近,计算效率更高,并研究了这种逼近引入的误差。此外,多锥度频谱估计中包含的窗口数量通常很重要,并且需要对限制该数量所导致的误差进行调查。最后,可以存储相同的最佳权重集并将其用于不同的窗口长度。结果表明,最优多锥体可以很好地近似于 Hermite 函数,

安装

通过 pip 安装:

pip install lspopt

测试

测试pytest

pytest tests/ 

每次提交到 GitHub 时都会运行测试,结果以及测试覆盖率可以在Azure Pipelines进行研究。

用法

要仅生成锥形窗口,请使用以下lspopt方法:

from lspopt import lspopt
H, w = lspopt(N=256, c_parameter=20.0)

还有一种方便的方法可以将SciPy 频谱图方法lspopt多锥窗口一起使用:

from lspopt import spectrogram_lspopt
f, t, Sxx = spectrogram_lspopt(x, fs, c_parameter=20.0)

然后可以使用例如matplotlib进行绘制。

例子

可以生成啁啾 过程实现并在其上运行频谱图方法。

import numpy as np
from scipy.signal import chirp, spectrogram
import matplotlib.pyplot as plt

from lspopt.lsp import spectrogram_lspopt

fs = 10000
N = 100000
amp = 2 * np.sqrt(2)
noise_power = 0.001 * fs / 2
time = np.arange(N) / fs
freq = np.linspace(1000, 2000, N)
x = amp * chirp(time, 1000, 2.0, 6000, method='quadratic') + \
    np.random.normal(scale=np.sqrt(noise_power), size=time.shape)

f, t, Sxx = spectrogram(x, fs)

ax = plt.subplot(211)
ax.pcolormesh(t, f, Sxx)
ax.set_ylabel('Frequency [Hz]')
ax.set_xlabel('Time [sec]')

f, t, Sxx = spectrogram_lspopt(x, fs, c_parameter=20.0)

ax = plt.subplot(212)
ax.pcolormesh(t, f, Sxx)
ax.set_ylabel('Frequency [Hz]')
ax.set_xlabel('Time [sec]')

plt.tight_layout()
plt.show()

频谱图 顶部:使用 SciPy 的频谱图方法。底部:使用 LSPOpt 的频谱图解决方案。

参考

[1] Hansson-Sandsten, M. (2011)。使用 Hermite 函数对一类局部平稳过程进行最优多锥 Wigner 谱估计。EURASIP 信号处理进展杂志,2011,10。

变更日志

此项目的所有显着更改都将记录在此文件中。

格式基于Keep a Changelog,并且该项目遵循Semantic Versioning

1.2.0 - 2022-06-08

添加

  • 新的绘图文件

固定的

  • PyPI 上的源分布被破坏。修改MANIFEST.in以纠正该问题(#5 和 #6)
  • 缺少绘图文件的 URL
  • 1e3使用符号修复了一些不正确的 int 声明

已移除

  • 删除了 Pipfile

1.1.1 - 2020-09-28

添加

  • 添加CHANGELOG.md

改变了

  • 将 CI 从 Azure Devops 更改为 Github Actions

1.1.0 - 2019-06-19

添加

  • 第一个 PyPI 发布的版本

[1.0.0] - 2016-08-22

添加

  • 被视为功能完整、稳定的库。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

lspopt-1.2.0.tar.gz (39.4 kB 查看哈希

已上传 source

内置分布

lspopt-1.2.0-py2.py3-none-any.whl (35.3 kB 查看哈希

已上传 py2 py3