# # Copyright © 2015 jaidev <jaidev@newton> # # Distributed under terms of the MIT license. """ ======================================= Spectrogram of a Noisy Transient Signal ======================================= This example demonstrates the simple use of a Spectrogram to localize a signal in time and frequency. The transient signal appears at the normalized frequency 0.25 and between time points 125 and 160. Figure 1.11 from the tutorial. """ import numpy as np from scipy.signal import hamming from tftb.generators import amexpos, fmconst, sigmerge, noisecg from tftb.processing.cohen import Spectrogram # Generate a noisy transient signal. transsig = amexpos(64, kind='unilateral') * fmconst(64)[0] signal = np.hstack((np.zeros((100, )), transsig, np.zeros((92, )))) signal = sigmerge(signal, noisecg(256), -5) fwindow = hamming(65) spec = Spectrogram(signal, n_fbins=128, fwindow=fwindow) spec.run() spec.plot(kind="contour", threshold=0.1, show_tf=False)
sig = np.hstack((sig1, np.zeros((8,)), sig2 + sig3)) iflaw = np.zeros((2, 128)) iflaw[0, :] = np.hstack((if1, np.nan * np.ones((8,)), if2)) iflaw[1, :] = np.hstack((np.nan * np.ones((68,)), if3)) tfr, t, f = ideal_tfr(iflaw) plt.figure(figsize=(10, 8)) plt.subplot(221) plt.contour(t, f, tfr, 1) plt.grid(True) plt.gca().set_xticklabels([]) plt.title("Ideal instantaneous frequencies") plt.ylabel('Normalized Frequencies') tfr, _, _ = Spectrogram(sig).run() threshold = np.amax(np.abs(tfr)) * 0.05 tfr[np.abs(tfr) <= threshold] = 0.0 plt.subplot(222) plt.imshow(np.abs(tfr)[:64, :], extent=[0, 128, 0, 0.5], aspect='auto', origin='lower') plt.grid(True) plt.gca().set_xticklabels([]) plt.gca().set_yticklabels([]) plt.title("Spectrogram") _, tfr, _ = re_spectrogram(sig) tfr = tfr[:64, :] threshold = np.amax(np.abs(tfr) ** 2) * 0.05 tfr[np.abs(tfr) ** 2 <= threshold] = 0.0 plt.subplot(223) plt.imshow(np.abs(tfr) ** 2, extent=[0, 128, 0, 0.5], aspect='auto', origin='lower')
#! /usr/bin/env python # -*- coding: utf-8 -*- # vim:fenc=utf-8 # # Copyright © 2015 jaidev <jaidev@newton> # # Distributed under terms of the MIT license. """ Examples from section 3.4.1 of the tutorial. """ from tftb.generators import fmlin from tftb.processing.cohen import Spectrogram import numpy as np import matplotlib.pyplot as plt sig = fmlin(128, 0, 0.3)[0] + fmlin(128, 0.2, 0.5)[0] window = np.exp(np.log(0.005) * np.linspace(-1, 1, 63) ** 2) spec = Spectrogram(sig, fwindow=window, n_fbins=128) spec.run() spec.plot(show_tf=True, cmap=plt.cm.gray)
#! /usr/bin/env python # -*- coding: utf-8 -*- # vim:fenc=utf-8 # # Copyright © 2015 jaidev <jaidev@newton> # # Distributed under terms of the MIT license. """ Examples from section 3.4.1 of the tutorial. """ from tftb.generators import fmlin from tftb.processing.cohen import Spectrogram import numpy as np import matplotlib.pyplot as plt sig = fmlin(128, 0, 0.3)[0] + fmlin(128, 0.2, 0.5)[0] window = np.exp(np.log(0.005) * np.linspace(-1, 1, 63)**2) spec = Spectrogram(sig, fwindow=window, n_fbins=128) spec.run() spec.plot(show_tf=True, cmap=plt.cm.gray)
""" ======================================= Spectrogram of a Noisy Transient Signal ======================================= This example demonstrates the simple use of a Spectrogram to localize a signal in time and frequency. The transient signal appears at the normalized frequency 0.25 and between time points 125 and 160. """ # dsp=fftshift(abs(fft(sign)).^2); # plot((-128:127)/256,dsp); import numpy as np from scipy.signal import hamming from tftb.generators import amexpos, fmconst, sigmerge, noisecg from tftb.processing.cohen import Spectrogram # Generate a noisy transient signal. transsig = amexpos(64, kind='unilateral') * fmconst(64)[0] signal = np.hstack((np.zeros((100,)), transsig, np.zeros((92,)))) signal = sigmerge(signal, noisecg(256), -5) fwindow = hamming(65) spec = Spectrogram(signal, n_fbins=128, fwindow=fwindow) spec.run() spec.plot(kind="contour", threshold=0.1)
#! /usr/bin/env python # -*- coding: utf-8 -*- # vim:fenc=utf-8 # # Copyright © 2015 jaidev <jaidev@newton> # # Distributed under terms of the MIT license. """ Example in section 1.3.3 of the tutorial. """ # dsp=fftshift(abs(fft(sign)).^2); # plot((-128:127)/256,dsp); import numpy as np from scipy.signal import hamming from tftb.generators import amexpos, fmconst, sigmerge, noisecg from tftb.processing.cohen import Spectrogram # Generate a noisy transient signal. transsig = amexpos(64, kind='unilateral') * fmconst(64)[0] signal = np.hstack((np.zeros((100, )), transsig, np.zeros((92, )))) signal = sigmerge(signal, noisecg(256), -5) fwindow = hamming(65) spec = Spectrogram(signal, n_fbins=128, fwindow=fwindow) spec.run() spec.plot(kind='contour')
# -*- coding: utf-8 -*- # vim:fenc=utf-8 # # Copyright © 2015 jaidev <jaidev@newton> # # Distributed under terms of the MIT license. """ Example in section 1.3.3 of the tutorial. """ # dsp=fftshift(abs(fft(sign)).^2); # plot((-128:127)/256,dsp); import numpy as np from scipy.signal import hamming from tftb.generators import amexpos, fmconst, sigmerge, noisecg from tftb.processing.cohen import Spectrogram # Generate a noisy transient signal. transsig = amexpos(64, kind='unilateral') * fmconst(64)[0] signal = np.hstack((np.zeros((100,)), transsig, np.zeros((92,)))) signal = sigmerge(signal, noisecg(256), -5) fwindow = hamming(65) spec = Spectrogram(signal, n_fbins=128, fwindow=fwindow) spec.run() spec.plot(kind='contour')
# # Distributed under terms of the MIT license. """ ======================================= Spectrogram of a Noisy Transient Signal ======================================= This example demonstrates the simple use of a Spectrogram to localize a signal in time and frequency. The transient signal appears at the normalized frequency 0.25 and between time points 125 and 160. Figure 1.11 from the tutorial. """ import numpy as np from scipy.signal import hamming from tftb.generators import amexpos, fmconst, sigmerge, noisecg from tftb.processing.cohen import Spectrogram # Generate a noisy transient signal. transsig = amexpos(64, kind='unilateral') * fmconst(64)[0] signal = np.hstack((np.zeros((100,)), transsig, np.zeros((92,)))) signal = sigmerge(signal, noisecg(256), -5) fwindow = hamming(65) spec = Spectrogram(signal, n_fbins=128, fwindow=fwindow) spec.run() spec.plot(kind="contour", threshold=0.1, show_tf=False)