问题描述
我有两个时间序列在 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 (将#修改为@)