Correlation & Convolution
import random
import matplotlib.pyplot as plt
data = [random.randint(-1,1) for _ in range(30)]
filter_ = [-1,1,1]
data_len = len(data)
filter_len = len(filter_)
valid_len = data_len - filter_len + 1
correlation = list()
convolution = list()
for data_idx in range(valid_len):
window = data[data_idx : data_idx + filter_len]
corr, conv = 0, 0
for win, filt in zip(window, filter_):
corr += win*filt
for win, filt in zip(window, filter_[::-1]):
conv += win*filt
correlation.append(corr)
convolution.append(conv)
fig, ax = plt.subplots(figsize=(10,5))
ax.plot(data, label = 'data')
ax.plot(correlation, label = 'correlation')
ax.legend(fontsize=10)
ax.grid()
fig, ax = plt.subplots(figsize=(10,5))
ax.plot(data, label = 'data')
ax.plot(convolution, label = 'convolution')
ax.legend(fontsize=10)
ax.grid()

