0
0
Signal Processingdata~20 mins

Power spectral density estimation in Signal Processing - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
PSD Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of PSD estimation using Welch's method
What is the shape of the output array psd after running Welch's method on a 1D signal of length 1024 with nperseg=1024?
Signal Processing
import numpy as np
from scipy.signal import welch

fs = 1000  # Sampling frequency
signal = np.random.randn(1024)
frequencies, psd = welch(signal, fs=fs, nperseg=1024)
print(psd.shape)
A(513,)
B(512,)
C(1024,)
D(256,)
Attempts:
2 left
💡 Hint
Welch's method returns half the FFT length plus one for the frequency bins.
data_output
intermediate
2:00remaining
Number of frequency bins in periodogram
Given a signal of length 2048 sampled at 500 Hz, what is the number of frequency bins returned by the periodogram method with default FFT length?
Signal Processing
import numpy as np
from scipy.signal import periodogram

fs = 500
signal = np.random.randn(2048)
frequencies, psd = periodogram(signal, fs=fs)
print(len(frequencies))
A2048
B2049
C1025
D1024
Attempts:
2 left
💡 Hint
Periodogram returns nfft/2 + 1 frequency bins for real signals.
visualization
advanced
3:00remaining
Identifying the correct PSD plot
Which plot correctly shows the power spectral density of a noisy sine wave at 50 Hz using Welch's method?
Signal Processing
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import welch

fs = 500
T = 2
t = np.linspace(0, T, int(T*fs), endpoint=False)
signal = np.sin(2*np.pi*50*t) + 0.5*np.random.randn(len(t))
frequencies, psd = welch(signal, fs=fs, nperseg=256)

plt.figure(figsize=(8,4))
plt.semilogy(frequencies, psd)
plt.xlabel('Frequency (Hz)')
plt.ylabel('PSD (V**2/Hz)')
plt.title('Power Spectral Density using Welch')
plt.grid(True)
plt.show()
AA plot with a peak near 100 Hz instead of 50 Hz
BA flat line with no peaks
CMultiple peaks at random frequencies with no dominant peak
DA plot with a clear peak near 50 Hz and noise floor elsewhere
Attempts:
2 left
💡 Hint
The sine wave frequency should appear as a peak in the PSD.
🧠 Conceptual
advanced
2:00remaining
Effect of segment length on PSD resolution
How does increasing the segment length (nperseg) in Welch's method affect the frequency resolution and variance of the PSD estimate?
AIncreases frequency resolution but increases variance
BDecreases frequency resolution and decreases variance
CIncreases frequency resolution and decreases variance
DDecreases frequency resolution but increases variance
Attempts:
2 left
💡 Hint
Longer segments give finer frequency bins but fewer averages.
🔧 Debug
expert
2:00remaining
Identifying error in PSD calculation code
What error will this code raise when calculating PSD using Welch's method?
import numpy as np
from scipy.signal import welch

fs = 1000
signal = np.random.randn(500)
frequencies, psd = welch(signal, fs=fs, nperseg=1024)
print(psd)
ANo error, prints PSD array
BValueError: nperseg must not be greater than input length
CIndexError: index out of range
DTypeError: unsupported operand type(s) for /: 'int' and 'str'
Attempts:
2 left
💡 Hint
Check if segment length is valid for the signal length.