import pyfar as pf
import matplotlib.pyplot as plt
import numpy as np
pf.plot.use()
_, ax = plt.subplots(2, 3)
data = pf.FrequencyData([1, 0], [5e3, 20e3])
for ff, fscale in enumerate(["linear", "log"]):
    interpolator = pf.dsp.InterpolateSpectrum(
        data, 'magnitude', ('nearest', 'linear', 'nearest'),
        fscale)
    signal = interpolator(64, 44100)
    signal = pf.dsp.linear_phase(signal, 32)
    pf.plot.time(signal, ax=ax[ff, 0], unit='ms', dB=True)
    pf.plot.freq(
        signal, dB=False, freq_scale="linear", ax=ax[ff, 1])
    pf.plot.freq(data, dB=False, freq_scale="linear",
                 ax=ax[ff, 1], c='r', ls='', marker='.')
    ax[ff, 1].set_xlim(0, signal.sampling_rate/2)
    ax[ff, 1].set_title(
        f"Interpolated on {fscale} frequency scale")
    pf.plot.freq(signal, dB=False, ax=ax[ff, 2], label='input')
    pf.plot.freq(data, dB=False, ax=ax[ff, 2],
                 c='r', ls='', marker='.', label='output')
    ax[ff, 2].set_xlim(2e3, signal.sampling_rate/2)
    ax[ff, 2].legend(loc='best')
