import pyfar as pf
s1 = pf.Signal([1, 0.5, 0.5], 1000)
s2 = pf.Signal([1,-1], 1000)
full = pf.dsp.convolve(s1, s2, mode='full')
cut = pf.dsp.convolve(s1, s2, mode='cut')
cyc = pf.dsp.convolve(s1, s2, mode='cyclic')
with pf.plot.context():
    fig, ax = plt.subplots(2, 1, sharex=True)
    pf.plot.time(s1, ax=ax[0], label='Signal 1', marker='o',
                 unit='samples')
    pf.plot.time(s2, ax=ax[0], label='Signal 2', marker='o',
                 unit='samples')
    ax[0].set_title('Input Signals')
    ax[0].legend()
    pf.plot.time(full, ax=ax[1], label='full', marker='o',
                 unit='samples')
    pf.plot.time(cut, ax=ax[1], label='cut', ls='--',  marker='o',
                 unit='samples')
    pf.plot.time(cyc, ax=ax[1], label='cyclic', ls=':', marker='o',
                 unit='samples')
    ax[1].set_title('Convolution Result')
    ax[1].set_ylim(-1.1, 1.1)
    ax[1].legend()
