跳转到主要内容

Python实现的多窗方法,用于估计某些局部平稳过程的Wigner谱

项目描述

LSPOpt

Build and Test PyPI version Code style: black

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

摘要来自[1]

本文研究了时间离散的多窗,这些窗给出了对一类局部平稳过程(LSPs)的均方误差最优Wigner谱估计。评估了LSP时间可变Wigner谱估计的准确性,并将其与其他常用方法进行了比较。最优多窗也通过Hermite函数近似,这更有效,同时研究了由此近似引入的误差。此外,多窗谱估计中包含的窗口数量往往至关重要,并对此数量限制引起的误差进行了研究。最后,相同的最佳权重集合可以存储并用于不同的窗口长度。因此,最优多窗被证明可以通过Hermite函数很好地近似,并且可以使用有限的窗口数量进行均方误差最优的频谱估计。

安装

通过pip安装

pip install lspopt

如果您想使用conda,请参阅此存储库中的说明

测试

使用 pytest 进行测试

pytest tests/

查看本 README 文件顶部的测试徽章,以获取测试覆盖率报表的链接。

用法

仅生成锥形窗口,使用 lspopt 方法

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

还有一个方便的方法,可以使用与 lspopt 多锥形窗口一起使用的SciPy 频谱图方法

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

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

示例

可以生成一个 Chirp 过程实现,并在此上运行频谱图方法。

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()

Spectrogram plot

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

参考文献

[1] Hansson-Sandsten, M. (2011). 使用 Hermite 函数对一类局部平稳过程进行最优多锥形 Wigner 频谱估计。EURASIP Journal on Advances in Signal Processing, 2011, 10.

变更日志

此文件将记录本项目所有的显著变更。

格式基于 Keep a Changelog,本项目遵循 语义化版本控制

[1.3.0] - 2023-01-24

变更

  • 修改了 CI 中的测试矩阵

移除

  • 支持 Python 2.7 和 3.6
  • 依赖 six

1.2.0 - 2022-06-08

添加

  • 新的绘图文件

修复

  • PyPI 上的源分布损坏。修改了 MANIFEST.in 以修复此问题 (#5 和 #6)
  • 缺失绘图文件的 URL
  • 修复了使用 1e3 表示法的某些不正确的整型声明

移除

  • 移除 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.3.0.tar.gz (39.3 kB 查看哈希)

上传时间

构建分布

lspopt-1.3.0-py2.py3-none-any.whl (35.1 kB 查看哈希)

上传时间 Python 2 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面