Я пытаюсь немного изучить обработку сигналов, в частности, используя 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» в качестве фильтра. Это явно не так, как видно из графиков ниже.
Я не совсем уверен, неправильно ли мое математическое понимание деконволюции или что-то не так с кодом. Любая помощь приветствуется!