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()

profile
공부한거 혼자 끄적끄적...

0개의 댓글