Bird
Raised Fist0
Signal Processingdata~10 mins

Spectrogram visualization in Signal Processing - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to import the library needed for plotting the spectrogram.

Signal Processing
import matplotlib.pyplot as [1]
Drag options to blanks, or click blank then click option'
Amatplot
Bmp
Cplt
Dplotlib
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect or uncommon aliases like 'mp' or 'matplot'.
Forgetting to import matplotlib.pyplot before plotting.
2fill in blank
medium

Complete the code to generate a spectrogram from the signal array using matplotlib.

Signal Processing
frequencies, times, Sxx = plt.specgram(signal, NFFT=[1], Fs=fs)
Drag options to blanks, or click blank then click option'
A128
B256
C1024
D512
Attempts:
3 left
💡 Hint
Common Mistakes
Using too small NFFT values like 128 which reduce frequency resolution.
Using values not a power of two which may cause errors.
3fill in blank
hard

Fix the error in the code to correctly label the x-axis as 'Time [sec]'.

Signal Processing
plt.xlabel([1])
Drag options to blanks, or click blank then click option'
A'Time [sec]'
BTime [sec]
C'Time (seconds)'
DTime_sec
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting quotes around the label string.
Using parentheses instead of square brackets for units.
4fill in blank
hard

Fill both blanks to create a dictionary comprehension that maps each frequency to its power value if power is above 0.1.

Signal Processing
freq_power = {freq: power[1] for freq, power in zip(frequencies, map(max, Sxx)) if power [2] 0.1}
Drag options to blanks, or click blank then click option'
A**2
B>
C>=
D*2
Attempts:
3 left
💡 Hint
Common Mistakes
Using multiplication instead of exponentiation for squaring.
Using >= instead of > which changes the filter condition.
5fill in blank
hard

Fill all three blanks to create a filtered dictionary of frequencies and powers where power is above 0.05, and keys are rounded frequencies.

Signal Processing
filtered = { [1]: [2] for freq, power in freq_power.items() if power [3] 0.05}
Drag options to blanks, or click blank then click option'
Around(freq)
Bpower
C>
Dfreq
Attempts:
3 left
💡 Hint
Common Mistakes
Not rounding the frequency keys.
Using <= or < instead of > for filtering.

Practice

(1/5)
1. What does a spectrogram primarily show in signal processing?
easy
A. How signal frequencies change over time
B. The total energy of a signal
C. The raw amplitude values of a signal
D. The phase shift of a signal

Solution

  1. Step 1: Understand spectrogram purpose

    A spectrogram is a visual tool that shows frequency content of a signal as it changes over time.
  2. Step 2: Compare options to definition

    Only How signal frequencies change over time describes frequency changes over time, which matches the spectrogram's function.
  3. Final Answer:

    How signal frequencies change over time -> Option A
  4. Quick Check:

    Spectrogram = frequency over time [OK]
Hint: Spectrogram = frequency vs time graph [OK]
Common Mistakes:
  • Confusing spectrogram with waveform plot
  • Thinking it shows only amplitude
  • Mixing phase information with frequency
2. Which Python library is commonly used to create spectrograms?
easy
A. matplotlib
B. pandas
C. scikit-learn
D. numpy

Solution

  1. Step 1: Identify libraries for plotting

    matplotlib is widely used for plotting graphs including spectrograms.
  2. Step 2: Check other libraries' main uses

    pandas is for data frames, scikit-learn for machine learning, numpy for arrays but not direct plotting.
  3. Final Answer:

    matplotlib -> Option A
  4. Quick Check:

    Plotting spectrogram = matplotlib [OK]
Hint: Plotting graphs? Think matplotlib [OK]
Common Mistakes:
  • Choosing numpy for plotting directly
  • Confusing pandas with plotting library
  • Selecting scikit-learn which is for ML
3. Given this Python code snippet, what is the shape of the output spectrogram array?
import numpy as np
from scipy.signal import spectrogram

fs = 1280  # Sampling frequency
x = np.sin(2 * np.pi * 50 * np.linspace(0, 1, fs))
f, t, Sxx = spectrogram(x, fs)
print(Sxx.shape)
medium
A. (1000, 1000)
B. (129, 9)
C. (50, 1000)
D. (1000, 129)

Solution

  1. Step 1: Understand spectrogram output dimensions

    The spectrogram function returns frequency bins and time bins. For default parameters, frequency bins are nfft/2+1 (default nfft=256), so 129 frequency bins.
  2. Step 2: Calculate time bins

    With 1 second signal sampled at 1280 Hz and default windowing, time bins are 9 segments.
  3. Final Answer:

    (129, 9) -> Option B
  4. Quick Check:

    Frequency bins = 129, Time bins = 9 [OK]
Hint: Spectrogram shape = (freq_bins, time_bins) [OK]
Common Mistakes:
  • Assuming output shape matches input length
  • Confusing frequency bins with sampling rate
  • Mixing up rows and columns in output
4. Identify the error in this code snippet for plotting a spectrogram:
import matplotlib.pyplot as plt
from scipy.signal import spectrogram

fs = 500
x = [1, 2, 3, 4, 5]
f, t, Sxx = spectrogram(x, fs)
plt.specgram(Sxx)
plt.show()
medium
A. Using plt.specgram instead of plt.plot
B. Missing import for numpy
C. Sampling frequency fs is too high
D. Passing Sxx instead of x to plt.specgram

Solution

  1. Step 1: Understand spectrogram output and plotting

    The spectrogram function returns frequencies, times, and the spectrogram matrix Sxx. plt.specgram expects raw signal, not Sxx.
  2. Step 2: Identify misuse of plt.specgram

    Passing Sxx (already spectrogram data) to plt.specgram causes error; should plot Sxx with plt.imshow or pass raw signal to plt.specgram.
  3. Final Answer:

    Passing Sxx instead of x to plt.specgram -> Option D
  4. Quick Check:

    Plot raw signal with plt.specgram, not spectrogram matrix [OK]
Hint: plt.specgram needs raw signal, not spectrogram data [OK]
Common Mistakes:
  • Passing spectrogram matrix to plt.specgram
  • Confusing plt.specgram with plt.imshow
  • Ignoring correct input types for plotting
5. You want a spectrogram with smoother frequency resolution but less time detail. Which parameter should you increase?
hard
A. Sampling frequency (fs)
B. Overlap between windows (noverlap)
C. Window size (nperseg)
D. FFT length (nfft) smaller than window size

Solution

  1. Step 1: Understand window size effect on spectrogram

    Larger window size increases frequency resolution but reduces time resolution (smoother frequency, less time detail).
  2. Step 2: Evaluate other parameters

    Increasing overlap smooths time axis but does not improve frequency resolution as much. Sampling frequency affects max frequency, not resolution. nfft smaller than window size is invalid.
  3. Final Answer:

    Window size (nperseg) -> Option C
  4. Quick Check:

    Increase window size for better frequency resolution [OK]
Hint: Bigger window = better frequency, worse time detail [OK]
Common Mistakes:
  • Increasing overlap to improve frequency resolution
  • Changing sampling frequency to affect resolution
  • Setting nfft smaller than window size
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard