Source code for tftb.processing.plotifl

#! /usr/bin/env python
# -*- coding: utf-8 -*-
# vim:fenc=utf-8
#
# Copyright © 2015 jaidev <jaidev@newton>
#
# Distributed under terms of the MIT license.

"""

"""

import numpy as np
import matplotlib.pyplot as plt
from tftb.processing.freq_domain import inst_freq
from tftb.generators import fmlin


[docs]def plotifl(time_instants, iflaws, signal=None, **kwargs): """Plot normalized instantaneous frequency laws. :param time_instants: timestamps of the signal :param iflaws: instantaneous freqency law(s) of the signal. :param signal: if provided, display it. :type time_instants: array-like :type iflaws: array-like :type signal: array-like :return: None """ indices = np.logical_not(np.isnan(iflaws)) minif = np.amin(iflaws[indices]) fig = plt.figure() if signal is not None: axsig = fig.add_subplot(211) axsig.set_position([0.10, 0.69, 0.80, 0.25]) plt.sca(axsig) plt.plot(time_instants, np.real(signal)) plt.title('Signal') plt.grid(True) plt.xlim(time_instants.min(), time_instants.max()) axtfr = fig.add_subplot(212) axtfr.set_position([0.10, 0.21, 0.80, 0.45]) plt.sca(axtfr) plt.plot(time_instants, iflaws) plt.xlim(time_instants.min(), time_instants.max()) plt.grid(kwargs.get('grid', True)) if minif >= 0: plt.ylim(0, 0.5) else: plt.ylim(-0.5, 0.5) plt.xlabel('Time') plt.ylabel('Normalized frequency') plt.title('Instantaneous frequency law(s)') plt.show()
if __name__ == '__main__': signal, _ = fmlin(256) time_samples = np.arange(3, 257) ifr = inst_freq(signal) plotifl(time_samples, ifr)