使用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 (将#修改为@)