<jupyter_start><jupyter_text>Kovariance https://cs.wikipedia.org/wiki/Kovariance<jupyter_code>import numpy as np
import matplotlib.pyplot as plt<jupyter_output><empty_output><jupyter_text>Testovací signály Výpočet používá následující proměnné: $f_s$ vzorkovací frekvence, $f$ frekvence signálu, $t$ trvání signálu.<jupyter_code>fs = 1000  # Hz

f = 4  # Hz
t = 1  # s

time = np.arange(t * fs) / fs
signal_sin = np.sin(2 * np.pi * f * time)
signal_cos = np.cos(2 * np.pi * f * time)<jupyter_output><empty_output><jupyter_text>Grafy Signál ve tvaru sinusovky:<jupyter_code>plt.scatter(time, signal_sin)<jupyter_output><empty_output><jupyter_text>Signál ve tvaru kosinusovky:<jupyter_code>plt.scatter(time, signal_cos)<jupyter_output><empty_output><jupyter_text>Výpočet Funkce pro výpočet kovariance:<jupyter_code>def covariance(a, b):
    # https://cs.wikipedia.org/wiki/Kovariance
    assert len(a) == len(b)
    return np.mean((a - np.mean(a)) * (b - np.mean(b)))<jupyter_output><empty_output><jupyter_text>Kovariance signálu se sebou samým Kovariance jak `signal_sin` tak `signal_cos` se sebou samým dává $1\over 2$.<jupyter_code>covariance(signal_sin, signal_sin)
covariance(signal_cos, signal_cos)<jupyter_output><empty_output><jupyter_text>Kovariance ortogonálních signálů Kovariance `signal_sin` se `signal_cos` dává nulu.<jupyter_code>covariance(signal_sin, signal_cos)<jupyter_output><empty_output><jupyter_text>Linearita Kovariance roste lineráně s velikostí vstupních signálů.<jupyter_code>covariance(2 * signal_sin, signal_sin)
covariance(2 * signal_sin, 2 * signal_sin)<jupyter_output><empty_output><jupyter_text>Korelační funkce Nyní je potřeba získat hodnoty kovariance pro různé posuny mezi jedním a druhým signálem. Korelační funkcí je pak závislost hodnoty kovariance na hodnotě posunu mezi signály. Z knihovny numpy je možno použít funkci [correlate](https://numpy.org/doc/stable/reference/generated/numpy.correlate.html).<jupyter_code>plt.plot(np.correlate(signal_sin, signal_sin, "full"))
plt.plot(np.correlate(signal_sin, signal_sin, "same"))<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.11227902532250358, 'fraction_numerical': 0.006211180124223602, 'mean_word_length': 7.7615062761506275, 'pattern_counts': {'":': 0, '<': 37, '<?xml version=': 0, '>': 37, 'https://': 3, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '9', 'dir': 'jupyter-structured-clean-dedup', 'id': '60915', 'license': 'MIT', 'n_tokens_mistral': 897, 'n_tokens_neox': 864, 'n_words': 149, 'path': 'notebooks/covariance.ipynb', 'repo_name': 'Reusek/Fast-Correlation', 'size': '2093'}