0
컨볼 루션 이후에 나타나는 아티팩트의 원인을 찾으려고 시도하고 있는데, arround x = -.0016 및 x = .0021 줄거리에서 볼 수 있습니다 (아래 코드 참조). 나는 코드에서 정의한 "lorentzian"함수 (또는 langevin 함수의 파생어)를 "ditrib"함수에 2 개의 Dirac 임펄스와 함께 convoluting합니다.
귀하의 도움에 감사드립니다.이 회선 신호의 인공물의 원인은 무엇입니까?
import numpy as np
import matplotlib.pyplot as plt
def Lorentzian(xx):
if not hasattr(xx, '__iter__'):
xx = [ xx ]
res = np.zeros(len(xx))
for i in range(len(xx)):
x = xx[i]
if np.fabs(x) < 0.1:
res[i] = 1./3. - x**2/15. + 2.* x**4/189. - x**6/675. + 2.* x**8/10395. - 1382. * x**10/58046625. + 4. * x**12/1403325.
else:
res[i] = (1./x**2 - 1./np.sinh(x)**2)
return res
amp = 18e-3
a = 1/.61e3
b = 5.5
t_min = 0
dt = 1/5e6
t_max = (10772) * dt
t = np.arange(t_min,t_max,dt)
x_min = -amp/b
x_max = amp/b
dx = dt*(x_min-x_max)/(t_min-t_max)
x = np.arange(x_min,x_max,dx)
func1 = lambda x : Lorentzian(b*(x/a))
def distrib(x):
res = np.zeros(np.size(x))
res[int(np.floor(np.size(x)/3))] = 1
res[int(3*np.floor(np.size(x)/4))] = 3
return res
func2 = lambda x,xs : np.convolve(distrib(x), func1(xs), 'same')
plt.plot(x, func2(x,x))
plt.xlabel('x (m)')
plt.ylabel('normalized signal')
안녕하세요. 도와 주셔서 감사합니다. 나는 이것을 시도하고 다시 연락 할 것입니다. – MaximeMusterFrau
감사합니다. 효과가있었습니다! 왜 그렇게해야하는지 설명해 주시겠습니까? 미리 감사드립니다. – MaximeMusterFrau
Dirac Impulse를 상수와 함께 전달하면 단계가 있습니다. "제한된 범위의 받침대"를 해킹하는 대신 "lorentzian"을 모두 사용하는 것이 이상적입니다.하지만 +/- 무한대에 정의되어 있기 때문에 ... – f5r5e5d