Convolution
컨볼루션의 개념
- 누적된 반응을 계산하는것
- 시간에 따라 신호간의 비슷한 정도를 나타내는것
이산 컨볼루션
- 델타함수: 0에서는 1의 값을 출력하고 다른 모든곳에의 출력은 0이다.
- 임의의 시그널 x[n]을 단위 임펄스함수 델타[n]으로 분해하여 표현 할수 있다.
- x[k]는 함수가 아닌 x시그널의 함수값이니 상수값으로 생각하여 상수가 곱해진 신호의 합으로도 볼수 있다.
- (3)번의 식을 위와같이 쓸 수 있다.
- h[n]은 델타함수의 선형변환이다->LTI 시스템->임펄스 응답이라고도 하며 컨볼루션 시스템에 입출력에 관계를 표현
- x[n]을 LTI시스템에 넣은 출력값 y[n]
- LTI시스템에 성질로인해 임펄수 함수들의 응답 h[n]의 컨볼루션으로 표현
- 델타함수가 이동할때마다 LTI시스템의 특성때문에 h[n]도 이동 LTI시스템의 Time invariant
- x[k] 가 곱해지는것이 LTI시스템의 scaling
- 시그마로 더해지는것 LTI시스템의 additivity
예제
def conv(v, w):
c = np.zeros(v.shape)
for n in range(len(v)):
c[n] = 0
for m in range(len(v)):
c[n] += v[m] * w[n - m]
return c
N = 20
v = np.zeros(N)
v[8:12] = 1
w = np.zeros(N)
w[1:5] = 1
c = conv(v, w)
fig = plt.figure()
ax = fig.gca()
ax.plot(v, '.-')
ax.plot(w, '.-')
ax.plot(c, '.-')
ax.legend(['v', 'w', 'c'])
ax.grid(True)
Reference: https://tootouch.github.io/research/spectral_gcn/ https://ralasun.github.io/deep%20learning/2021/02/15/gcn/ https://ahjeong.tistory.com/15 https://harryjo97.github.io/page3/ https://process-mining.tistory.com/157