In order to generate sinusoid test data in Python you can use the UliEngineering library which provides an easy-to-use functions in `UliEngineering.SignalProcessing.Simulation`

:

### How to install UliEngineering

UliEngineering is a Python 3 only library. Install using `pip`

:

sudo pip3 install -U UliEngineering

### Basic example

from UliEngineering.SignalProcessing.Simulation import sine_wave # Default: Generates 1 second of data with amplitude = 1.0 (swing from -1.0 ... 1.0) sine = sine_wave(frequency=10.0, samplerate=10e3) cosine = cosine_wave(frequency=10.0, samplerate=10e3)

### Amplitude & offset

Use `amplitude=0.5`

to specify that the sine wave should swing between `-0.5`

and `0.5`

.

Use `offset=2.0`

to specify that the sine wave should be centered vertically around `2.0`

:

from UliEngineering.SignalProcessing.Simulation import sine_wave data = sine_wave(frequency=10.0, samplerate=10e3, amplitude=0.5, offset=2.0)

### Phaseshift example

You can specify the phaseshift to use – to use a `180°`

phaseshift, just use `phaseshift=180.0`

from UliEngineering.SignalProcessing.Simulation import sine_wave original = sine_wave(frequency=10.0, samplerate=10e3) shifted = sine_wave(frequency=10.0, samplerate=10e3, phaseshift=180.)

### Time delay example

While this is functionally equivalent to phase offset, it is often convenient to specify the *time delay* in seconds instead of the phase shift in degrees:

from UliEngineering.SignalProcessing.Simulation import sine_wave original = sine_wave(frequency=10.0, samplerate=10e3) # Shifted signal is delayed 0.01s = 10 milliseconds compared to original shifted = sine_wave(frequency=10.0, samplerate=10e3, timedelay=0.01)

Note that in the time domain, the signals appear to be shifted backwards when you use a positive timedelay value. This is in accordance with the *delay* naming, implying that the signal is *delayed* by that amount.

You can specify both *phase shift* and *time delay*, meaning that both will be applied (the offset is added)

### Plotting

If you want to debug your signals visually, this is the code that was used inside Jupyter to generate the plots shown above:

%matplotlib inline from matplotlib import pyplot as plt plt.style.use("ggplot") # Generate data from UliEngineering.SignalProcessing.Simulation import sine_wave original = sine_wave(frequency=10.0, samplerate=10e3) shifted = sine_wave(frequency=10.0, samplerate=10e3, timedelay=0.01) # set_size_inches(20, 10) to make it even larger! plt.gcf().set_size_inches(10, 5) plt.plot(original, label="original") plt.plot(shifted, label="shifted") plt.savefig("/dev/shm/timedelay.svg") plt.legend(loc=1) # Top right