微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用python在对数网格上卷积一维信号

如何解决使用python在对数网格上卷积一维信号

我有两个时间序列在 log10 时间戳上离散化,我想使用 python 将它们相互卷积。对于线性间隔的时间序列,我使用 scipy.signal.convole效果很好。 log10离散化有类似的东西吗?截止频率是根据高斯核 (sigma) 的标准偏差定义的。目标是过滤具有相同截止频率的日志。

import numpy as np
import matplotlib.pyplot as plt
import scipy.signal as sg

f = lambda t : np.sin(2 * t) + np.sin(0.5 * t)

sigma = 1
kernel = lambda x : np.exp(-x**2 / (2 * sigma**2)) / (np.sqrt(2 * np.pi) * sigma)


# LINEAR discretization

t_linear = np.arange(0,100,0.01)
signal_linearly_discretized = f(t_linear)

t_kernel_linear = np.arange(-10,10,0.01)
kernel_linearly_discretized = kernel(t_kernel_linear)


# Filter by convolution of kernel and signal

signal_filtered_linear = np.convolve(kernel_linearly_discretized,signal_linearly_discretized,mode="same") / np.sum(kernel_linearly_discretized)


# LOG discretization

t_log = np.logspace(0,1000)
signal_log_discretized = f(t_log)

"""
Filtering signal_log_discretized is unclear
"""

# Filter by convolution of kernel and signal

signal_filtered_linear = np.convolve(kernel_linearly_discretized,mode="same") / np.sum(kernel_linearly_discretized)

# Plotting of linear signal and filtered signal

fig,axes = plt.subplots(1,2)

ax = axes[0]
ax.plot(t_linear,signal_linearly_discretized)
ax.set_title("signal")

ax = axes[1]
ax.plot(t_linear,signal_filtered_linear)
ax.set_title("signal filtered")

fig.tight_layout()

在上面,您可以看到我将高斯滤波器应用于线性离散信号的代码。我想对信号 signal_log_discretized 执行相同(或类似)的操作。

谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。