From ac09d6073b931277f3bd284a972a6c9f46fec1d5 Mon Sep 17 00:00:00 2001 From: Dietrich Brunn Date: Sun, 26 Feb 2017 20:08:55 +0100 Subject: [PATCH 1/3] Fix layout of spectrum_demo.py --- examples/pylab_examples/spectrum_demo.py | 41 +++++++++++++++--------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/examples/pylab_examples/spectrum_demo.py b/examples/pylab_examples/spectrum_demo.py index 3ad242d2c7ae..35c63769e5ca 100644 --- a/examples/pylab_examples/spectrum_demo.py +++ b/examples/pylab_examples/spectrum_demo.py @@ -1,32 +1,43 @@ +""" +======================== +Spectrum Representations +======================== + +The plots show different spectrum representations of a sine signal with +additive noise. A (frequency) spectrum of a discrete-time signal is calculated +by utilizing the fast Fourier transform (FFT). +""" import matplotlib.pyplot as plt import numpy as np np.random.seed(0) -dt = 0.01 -Fs = 1/dt +dt = 0.01 # sampling interval +Fs = 1/dt # sampling frequency t = np.arange(0, 10, dt) + +# generate noise: nse = np.random.randn(len(t)) r = np.exp(-t/0.05) - cnse = np.convolve(nse, r)*dt cnse = cnse[:len(t)] -s = 0.1*np.sin(2*np.pi*t) + cnse - -plt.subplot(3, 2, 1) -plt.plot(t, s) -plt.subplot(3, 2, 3) -plt.magnitude_spectrum(s, Fs=Fs) +s = 0.1*np.sin(2*np.pi*t) + cnse # the signal -plt.subplot(3, 2, 4) -plt.magnitude_spectrum(s, Fs=Fs, scale='dB') +fig, axx = plt.subplots(3, 2) -plt.subplot(3, 2, 5) -plt.angle_spectrum(s, Fs=Fs) +# plot time signal: +axx[0, 0].plot(t, s) +axx[0, 0].set_xlabel("Time $t$") +axx[0, 0].set_ylabel("Signal $s(t)$") -plt.subplot(3, 2, 6) -plt.phase_spectrum(s, Fs=Fs) +# plot different spectrum types: +axx[1, 0].magnitude_spectrum(s, Fs=Fs) +axx[2, 0].phase_spectrum(s, Fs=Fs) +axx[0, 1].remove() # don't display empty ax +axx[1, 1].magnitude_spectrum(s, Fs=Fs, scale='dB') +axx[2, 1].angle_spectrum(s, Fs=Fs) +fig.tight_layout() plt.show() From b88f58c662b6d40b7562c135175f80ebec8d8053 Mon Sep 17 00:00:00 2001 From: Dietrich Brunn Date: Wed, 1 Mar 2017 00:04:57 +0100 Subject: [PATCH 2/3] Beautified spectrum_demo.py a little more. --- examples/pylab_examples/spectrum_demo.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/examples/pylab_examples/spectrum_demo.py b/examples/pylab_examples/spectrum_demo.py index 35c63769e5ca..bec3f99bbc6b 100644 --- a/examples/pylab_examples/spectrum_demo.py +++ b/examples/pylab_examples/spectrum_demo.py @@ -25,19 +25,19 @@ s = 0.1*np.sin(2*np.pi*t) + cnse # the signal -fig, axx = plt.subplots(3, 2) +fig, axes = plt.subplots(nrows=3, ncols=2) # plot time signal: -axx[0, 0].plot(t, s) -axx[0, 0].set_xlabel("Time $t$") -axx[0, 0].set_ylabel("Signal $s(t)$") +axes[0, 0].plot(t, s) +axes[0, 0].set_xlabel("Time") +axes[0, 0].set_ylabel("Amplitude") # plot different spectrum types: -axx[1, 0].magnitude_spectrum(s, Fs=Fs) -axx[2, 0].phase_spectrum(s, Fs=Fs) -axx[0, 1].remove() # don't display empty ax -axx[1, 1].magnitude_spectrum(s, Fs=Fs, scale='dB') -axx[2, 1].angle_spectrum(s, Fs=Fs) +axes[1, 0].magnitude_spectrum(s, Fs=Fs) +axes[1, 1].magnitude_spectrum(s, Fs=Fs, scale='dB') +axes[2, 0].phase_spectrum(s, Fs=Fs) +axes[2, 1].angle_spectrum(s, Fs=Fs) +axes[0, 1].remove() # don't display empty ax fig.tight_layout() plt.show() From f2bc54bfbda234b5fc76a43328cf0437db483448 Mon Sep 17 00:00:00 2001 From: Dietrich Brunn Date: Thu, 2 Mar 2017 00:18:04 +0100 Subject: [PATCH 3/3] Added plot titles to spectrum_demo.py --- examples/pylab_examples/spectrum_demo.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/examples/pylab_examples/spectrum_demo.py b/examples/pylab_examples/spectrum_demo.py index bec3f99bbc6b..44e1b31a42d9 100644 --- a/examples/pylab_examples/spectrum_demo.py +++ b/examples/pylab_examples/spectrum_demo.py @@ -23,20 +23,29 @@ cnse = np.convolve(nse, r)*dt cnse = cnse[:len(t)] -s = 0.1*np.sin(2*np.pi*t) + cnse # the signal +s = 0.1*np.sin(4*np.pi*t) + cnse # the signal -fig, axes = plt.subplots(nrows=3, ncols=2) +fig, axes = plt.subplots(nrows=3, ncols=2, figsize=(7, 7)) # plot time signal: -axes[0, 0].plot(t, s) +axes[0, 0].set_title("Signal") +axes[0, 0].plot(t, s, color='C0') axes[0, 0].set_xlabel("Time") axes[0, 0].set_ylabel("Amplitude") # plot different spectrum types: -axes[1, 0].magnitude_spectrum(s, Fs=Fs) -axes[1, 1].magnitude_spectrum(s, Fs=Fs, scale='dB') -axes[2, 0].phase_spectrum(s, Fs=Fs) -axes[2, 1].angle_spectrum(s, Fs=Fs) +axes[1, 0].set_title("Magnitude Spectrum") +axes[1, 0].magnitude_spectrum(s, Fs=Fs, color='C1') + +axes[1, 1].set_title("Log. Magnitude Spectrum") +axes[1, 1].magnitude_spectrum(s, Fs=Fs, scale='dB', color='C1') + +axes[2, 0].set_title("Phase Spectrum ") +axes[2, 0].phase_spectrum(s, Fs=Fs, color='C2') + +axes[2, 1].set_title("Angle Spectrum") +axes[2, 1].angle_spectrum(s, Fs=Fs, color='C2') + axes[0, 1].remove() # don't display empty ax fig.tight_layout()