2
그래서 제대로 작동하려면 convolve 및 deconvolve를 얻는 방법을 알아 내려고합니다. 나는 "a"는 하나의 점에 대해 (나 같은 = [2]), 배열 대신, 그냥 잘 작동 컨 볼브 때두 개의 배열을 convolve 및 deconvolve
import numpy as np
from scipy import interpolate
from scipy import signal
import matplotlib.pyplot as plt
a = np.arange(0, 50, 1)
b = np.array([1,2,1])
aconvolved = signal.convolve(np.sin(a), b)
adeconvolved = signal.deconvolve(aconvolved, b)
plt.figure()
plt.plot(a, np.sin(a), 'g')
plt.plot(a, aconvolved[0], 'r')
plt.plot(a, adeconvolved[0], 'b')
plt.draw()
: 여기에 내 코드입니다. 그러나 1 포인트 이상 또는 배열에 대해 시도 할 때 작동하지 않습니다.
a = np.arange(1, 50, 1)
b = np.array([1,2,1])
이 경우에도 불구하고, 나는 동일한 기능을 수행 할 경우 그들은 모두 1부터 시작합니까 알고 내가 대신 사용하는 경우 나는이 같은 오류가
"ValueError: x and y must have same first dimension"
: I는 다음과 같은 오류가 발생
"ValueError: BUG: filter coefficient a[0] == 0 not supported yet"
: 일이 있지만,
b = np.array([1,2,1])
와 나는의 오류
누구나 내가 잘못하고있는 것에 대한 조언이 있습니까?
최고 실제 결과는 첫 번째 부분 인 튜플을 반환합니다. 여전히 더 많은 해상도를 위해 동일한 예제를 변경하려고하면 x와 y의 첫 번째 오류가 동일하고 다른 첫 번째 차원이 있습니다. 사용 : "a = np.arange (0, 50, .5)"및 "b = np.array ([1,1.5,2, 1.5, 1]) – Kyle
길이 교정은 필터의 길이에 따라 다릅니다. 필터 길이가 5가되면 양 끝에서 두 개의 샘플을 제거해야합니다 :'aconvolved [2 : -2]'. 출력 길이는 (이 모드에서) <입력 길이> + <필터 길이> - 1이며,이 경우 50 + 5-1 = 54입니다. – DrV