def create_fake_data(N): ''' Given number of signal components N, return signal object containing N components with random frquencies, amplitudes and phases. ''' signal = seismo.signal() print("Fake numbers") for i in range(N): amplitude = 0.1*np.random.rand() frequency = np.random.rand()*300 phase = np.random.rand()*np.pi component = seismo.sinewave(amplitude, frequency, phase, 0) # add component to signal signal.add_component(component) print("{}, {}, {}".format(amplitude, frequency, phase)) return signal
def create_fake_data(N): ''' Given number of signal components N, return signal object containing N components with random frquencies, amplitudes and phases. ''' signal = seismo.signal() print("Fake numbers") for i in range(N): amplitude = 0.1 * np.random.rand() frequency = np.random.rand() * 300 phase = np.random.rand() * np.pi component = seismo.sinewave(amplitude, frequency, phase, 0) # add component to signal signal.add_component(component) print("{}, {}, {}".format(amplitude, frequency, phase)) return signal
import matplotlib.pyplot as plt import matplotlib import seismo matplotlib.style.use('ggplot') if __name__ == "__main__": # create some fake data t = np.linspace(0, 20, 10000) # let's add some random sine waves N_signals = 5 signal = seismo.signal() for i in range(N_signals): amplitude = 0.01*np.random.rand() frequency = np.random.rand()*200 phase = np.random.rand()*np.pi component = seismo.sinewave(amplitude, frequency, phase, 0) # add component to signal signal.add_component(component) # evaluate signal at times s = signal.evaluate(t) + 0.025*np.random.randn(t.size) # now calculate the DFT # Need to know Nyquist (more or less)
import matplotlib from matplotlib.pyplot import subplot, plot, show from numpy import linspace, sin, pi, random import seismo matplotlib.style.use('ggplot') x = linspace(0, 0.05, 500) y = 0.6*sin(2*pi*240*x) + 0.2*random.randn(x.size) f, a = seismo.deeming(x, y) fmax, amax = seismo.find_peak(f, a) signal = seismo.signal() comp1 = seismo.sinewave(amax, fmax, 0) signal.add_component(comp1) signal.fit(x, y) plot(x, y, '.') plot(x, signal.evaluate(x), lw=2) show()