import matplotlib import matplotlib.pyplot as plt import rsg from fft import fft, real HARMONICS = 8 FREQUENCY = 1200 N = 1024 sigs = rsg.generate(HARMONICS, FREQUENCY, N) fig, (ax1, ax2) = plt.subplots(2, 1) ax1.plot(sigs) ax1.set_xlim(0, int(N/4)) ax1.set(xlabel='time', ylabel='signal', title='Random generated signals') ax2.plot(real(fft(sigs))) ax2.set_xlim(0, int(N/4)) ax2.set(xlabel='time', ylabel='frequency', title='Frequency spectrum using FFT') fig.savefig("example-fft.png") plt.show()
import matplotlib import matplotlib.pyplot as plt import rsg import stats HARMONICS = 8 FREQUENCY = 1200 N = 1024 COMPLEXITY_LIMIT = 16384 sigs1 = rsg.generate(HARMONICS, FREQUENCY, N) sigs2 = rsg.generate(HARMONICS, FREQUENCY, N) fig, (ax1, ax2) = plt.subplots(2, 1) plt.tight_layout(pad=4) ax1.plot(list(range(N)), sigs1, c="g", label="signal") ax1.plot(list(range(int(N / 2))), stats.autocorrelation(sigs1), linewidth=5, label="corelation", alpha=0.5) ax1.set_xlim(0, int(N / 8)) ax1.set(ylabel='correlation', xlabel='τ', title='Autocorrelation') ax2.plot(list(range(N)), sigs1, c="g", label="signal 1") ax2.plot(list(range(N)), sigs2, c="r", label="signal 2") ax2.plot(list(range(int(N / 2))), stats.crosscorrelation(sigs1, sigs2),
import matplotlib import matplotlib.pyplot as plt import rsg import stats import time HARMONICS = 8 FREQUENCY = 1200 Ns = list(map(lambda num: 2**num, list(range(1, 20)))) listtimes = list() arraytimes = list() for N in Ns: start = time.time() stats.correlation(rsg.generate(HARMONICS, FREQUENCY, N), rsg.generate(HARMONICS, FREQUENCY, N)) listtimes.append(time.time() - start) start = time.time() stats.correlation_array(rsg.generate(HARMONICS, FREQUENCY, N), rsg.generate(HARMONICS, FREQUENCY, N)) arraytimes.append(time.time() - start) fig, ax = plt.subplots() ax.plot(Ns, listtimes, c="g", label="list") ax.plot(Ns, arraytimes, c="r", label="array") fig.savefig("example-listvsarray.png") plt.show()
# additional task for lab 1.1 import matplotlib import matplotlib.pyplot as plt import rsg import stats HARMONICS = 8 FREQUENCY = 1200 Ns = list(map(lambda num: 2**num, list(range(1, 12)))) Mxs = list() for N in Ns: Mxs.append(stats.average(rsg.generate(HARMONICS, FREQUENCY, N))) fig, ax = plt.subplots() ax.plot(Ns, Mxs, c="r") ax.set_xlim(0, Ns.pop()) fig.savefig("example-mx.png") plt.show()