import numpy as np import matplotlib.pyplot as plt # vytvoreni signalu t = np.linspace(0, 2, 200) clean_signal = np.sin(2 * np.pi * 1 * t) # zasumeni signalu noise = 0.1 * np.random.randn(len(t)) noisy_signal = clean_signal + noise # 1D konvoluce def convolution(signal, clean): c = [] for i, bv in enumerate(clean): for j, value in enumerate(signal): if i+j < len(c): c[i+j] += value*bv else: c.append(value*bv) return c # vytvoření filtru na signál def filter_signal(signal, number): return convolution(signal, [1/number for _ in range(number)]) # první obrázek - vytvořený signál plt.plot(noisy_signal) plt.show() # druhý obrázek - signál po filtru n=5 plt.plot(filter_signal(noisy_signal, 5)) plt.show() # třetí obrázek - signál po filtru n=20 plt.plot(filter_signal(noisy_signal, 20)) plt.show()