【发布时间】:2021-01-31 02:34:26
【问题描述】:
我正在尝试学习一些信号处理,特别是使用 Python。这是我编写的示例代码。
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import deconvolve
a = np.linspace(-1,1,50)
b = np.linspace(-1,1,50)**2
c = np.convolve(a,b,mode='same')
quotient,remainder = deconvolve(c,b);
plt.plot(a/max(a),"g")
plt.plot(b/max(b),"r")
plt.plot(c/max(c),"b")
plt.plot(remainder/max(remainder),"k")
#plt.plot(quotient/max(quotient),"k")
plt.legend(['a_original','b_original','convolution_a_b','deconvolution_a_b'])
在我的理解中,卷积数组的反卷积应该返回完全相同的数组“a”,因为我使用“b”作为过滤器。如下图所示,显然不是这种情况。
我不确定我对反卷积的数学理解是否错误,或者代码是否有问题。非常感谢任何帮助!
【问题讨论】:
标签: python scipy signal-processing convolution deconvolution