📖 Scenario: You are working with sound signals and want to see how the frequency content changes over time. A spectrogram is a great way to visualize this. It shows frequencies on one axis, time on another, and the intensity of frequencies as colors.
🎯 Goal: You will create a simple MATLAB program that generates a sound signal, sets up parameters for the spectrogram, computes the spectrogram, and then displays it.
📋 What You'll Learn
Create a time vector and a signal with two different frequencies
Set window size and overlap parameters for the spectrogram
Use the spectrogram function to compute the spectrogram
Display the spectrogram with proper axis labels
💡 Why This Matters
🌍 Real World
Spectrograms are used in audio analysis, speech recognition, music processing, and many engineering fields to understand how frequencies change over time.
💼 Career
Knowing how to generate and interpret spectrograms is useful for audio engineers, signal processing specialists, and researchers working with time-varying signals.
Progress0 / 4 steps
1
Create the sound signal
Create a time vector t from 0 to 2 seconds with a sample rate of 1000 Hz. Then create a signal x that is a sum of two sine waves: one with frequency 50 Hz and another with frequency 120 Hz.
MATLAB
Hint
Use fs = 1000 for sample rate. Create t using 0:1/fs:2. Then add two sine waves with sin(2*pi*freq*t).
2
Set spectrogram parameters
Create a variable window_size and set it to 128. Create a variable overlap and set it to 120. These will be used as parameters for the spectrogram function.
MATLAB
Hint
Set window_size = 128 and overlap = 120 exactly as variables.
3
Compute the spectrogram
Use the spectrogram function with the signal x, window size window_size, overlap overlap, and sample rate fs. Store the output in variables S, F, and T.
MATLAB
Hint
Call spectrogram with x, window_size, overlap, empty vector [] for default FFT length, and fs.
4
Display the spectrogram
Use imagesc to display the magnitude of S over time T and frequency F. Label the x-axis as 'Time (seconds)' and y-axis as 'Frequency (Hz)'. Add a colorbar to show intensity.
MATLAB
Hint
Use imagesc(T, F, abs(S)) to show the spectrogram. Use axis xy to flip y-axis. Label axes with xlabel and ylabel. Add colorbar.
Practice
(1/5)
1. What does a spectrogram primarily display in signal processing?
easy
A. The total energy of a signal
B. How frequencies change over time in a signal
C. The amplitude of a signal at a single point
D. The phase shift of a signal
Solution
Step 1: Understand the purpose of a spectrogram
A spectrogram is a visual tool that shows how the frequency content of a signal varies over time.
Step 2: Compare options with the definition
Only How frequencies change over time in a signal correctly describes this as frequency changes over time, while others describe different signal properties.
Final Answer:
How frequencies change over time in a signal -> Option B
Quick Check:
Spectrogram = frequency vs time [OK]
Hint: Spectrogram = frequency changes over time [OK]
Common Mistakes:
Confusing amplitude with frequency
Thinking spectrogram shows total energy
Mixing phase shift with frequency content
2. Which of the following is the correct syntax to create a spectrogram in MATLAB for signal x with window size 256 and overlap 128?
easy
A. spectrogram(x,256,128)
B. spectrogram(x,128,256)
C. spectrogram(256,x,128)
D. spectrogram(x,128)
Solution
Step 1: Recall MATLAB spectrogram syntax
The syntax is spectrogram(signal,window,overlap), so the window size comes before overlap.
Step 2: Match parameters to syntax
spectrogram(x,256,128) correctly uses spectrogram(x,256,128) where 256 is window size and 128 is overlap.
Signal length = 1000 samples, window=128, overlap=64, step = 128-64=64 samples. Number of segments = floor((1000-128)/64) + 1 = floor(872/64) + 1 = 13 + 1 = 14 columns.
Final Answer:
129 rows by 14 columns -> Option C
Quick Check:
Rows = 129, Columns = 14 [OK]
Hint: Rows = nfft/2+1, columns depend on window and overlap [OK]
Common Mistakes:
Confusing nfft with window size for rows
Miscounting number of segments
Ignoring overlap in time bins calculation
4. Given the code snippet:
x = randn(1,1000); [S,F,T] = spectrogram(x,256,128,512,1000); imagesc(T,F,abs(S)); axis xy;
The spectrogram plot looks very blurry. What is the most likely cause?
medium
A. Sampling frequency is too low
B. Overlap is too small, causing gaps in data
C. nfft is smaller than window size, causing error
D. Window size is too large, causing poor time resolution
Solution
Step 1: Analyze window size effect on resolution
A large window size (256) smooths over time, reducing time resolution and causing blur.
Step 2: Check other parameters
Overlap is 128 (50%), which is typical and not causing gaps. nfft (512) is larger than window (256), which is valid. Sampling frequency (1000) is standard.
Final Answer:
Window size is too large, causing poor time resolution -> Option D
Quick Check:
Large window = poor time resolution [OK]
Hint: Large window = better frequency, worse time resolution [OK]
Common Mistakes:
Confusing overlap with window size effect
Assuming nfft smaller than window causes blur
Blaming sampling frequency for blur
5. You want to analyze a signal with rapidly changing frequencies using MATLAB's spectrogram. Which combination of parameters will best capture quick changes without losing frequency detail?
hard
A. Small window size, large overlap, moderate nfft
B. Large window size, large overlap, small nfft
C. Large window size, small overlap, large nfft
D. Small window size, small overlap, large nfft
Solution
Step 1: Understand trade-offs in spectrogram parameters
Small window size improves time resolution to capture rapid changes. Large overlap ensures smooth transitions between windows. Moderate nfft balances frequency resolution without excessive computation.
Step 2: Evaluate options
Small window size, large overlap, moderate nfft matches these criteria. Small window size, small overlap, large nfft has small overlap, causing gaps. Options B and C use large windows, reducing time resolution.
Final Answer:
Small window size, large overlap, moderate nfft -> Option A
Quick Check:
Quick changes need small window + large overlap [OK]
Hint: Small window + large overlap = best for fast changes [OK]
Common Mistakes:
Using large window for fast changes
Ignoring overlap size
Choosing too small nfft losing frequency detail
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.