Bird
Raised Fist0
Signal Processingdata~10 mins

Discrete Fourier Transform (DFT) 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 function for computing the Discrete Fourier Transform.

Signal Processing
from numpy.fft import [1]
Drag options to blanks, or click blank then click option'
Afft
Bifft
Cfftshift
Drfft
Attempts:
3 left
💡 Hint
Common Mistakes
Choosing 'ifft' which computes the inverse transform.
Choosing 'fftshift' which rearranges the zero-frequency component.
2fill in blank
medium

Complete the code to compute the DFT of the signal array named signal.

Signal Processing
dft_result = [1](signal)
Drag options to blanks, or click blank then click option'
Anp.fft.fft
Bnp.fft.fftshift
Cnp.fft.rfft
Dnp.fft.ifft
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'ifft' which computes the inverse transform.
Using 'fftshift' which only rearranges the output.
3fill in blank
hard

Fix the error in the code to correctly compute the magnitude spectrum of the DFT result.

Signal Processing
magnitude = abs([1])
Drag options to blanks, or click blank then click option'
Asignal
Bnp.abs(signal)
Cnp.fft.fft(signal)
Dnp.fft.ifft(signal)
Attempts:
3 left
💡 Hint
Common Mistakes
Taking absolute value of the original signal instead of its FFT.
Using inverse FFT instead of FFT.
4fill in blank
hard

Fill both blanks to create a dictionary comprehension that maps each frequency bin index to its magnitude if magnitude is greater than 10.

Signal Processing
freq_magnitudes = {i: magnitudes[i] for i in range(len(magnitudes)) if magnitudes[i] [1] [2]
Drag options to blanks, or click blank then click option'
A>
B10
C<
D5
Attempts:
3 left
💡 Hint
Common Mistakes
Using less than operator instead of greater than.
Using wrong threshold value.
5fill in blank
hard

Fill all three blanks to create a dictionary comprehension that maps frequency bin indices (starting from 0) to their magnitude only if magnitude is greater than 5 and less than 20.

Signal Processing
filtered_magnitudes = {i: magnitudes[i] for i in range([1]) if magnitudes[i] [2] 5 and magnitudes[i] [3] 20}
Drag options to blanks, or click blank then click option'
Alen(magnitudes)
B>
C<
D10
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect range length.
Using wrong comparison operators.

Practice

(1/5)
1. What does the Discrete Fourier Transform (DFT) primarily do to a signal?
easy
A. Converts the signal from time domain to frequency domain
B. Amplifies the signal amplitude
C. Filters out noise from the signal
D. Compresses the signal data size

Solution

  1. Step 1: Understand signal domains

    The time domain shows how a signal changes over time, while the frequency domain shows the signal's frequency components.
  2. Step 2: Role of DFT

    DFT transforms a signal from the time domain into the frequency domain, revealing hidden frequencies.
  3. Final Answer:

    Converts the signal from time domain to frequency domain -> Option A
  4. Quick Check:

    DFT = Time to Frequency [OK]
Hint: DFT = time to frequency conversion [OK]
Common Mistakes:
  • Thinking DFT amplifies signals
  • Confusing DFT with noise filtering
  • Assuming DFT compresses data
2. Which of the following is the correct Python syntax to compute the DFT of a 1D array signal using numpy?
easy
A. numpy.dft(signal)
B. numpy.fft.fft(signal)
C. numpy.fft.dft(signal)
D. numpy.fft.transform(signal)

Solution

  1. Step 1: Identify numpy FFT function

    In numpy, the function to compute the Discrete Fourier Transform is fft inside the fft module.
  2. Step 2: Check correct syntax

    The correct call is numpy.fft.fft(signal). Other options are either non-existent or incorrect function names.
  3. Final Answer:

    numpy.fft.fft(signal) -> Option B
  4. Quick Check:

    Use numpy.fft.fft() for DFT [OK]
Hint: Use numpy.fft.fft() to compute DFT [OK]
Common Mistakes:
  • Using nonexistent numpy.dft() function
  • Confusing module and function names
  • Typing transform instead of fft
3. Given the Python code:
import numpy as np
signal = np.array([1, 0, -1, 0])
dft_result = np.fft.fft(signal)
print(np.round(dft_result, 2))

What is the output?
medium
A. [0.+0.j 0.+2.j 0.+0.j 0.-2.j]
B. [0.+0.j 0.+0.j 0.+0.j 0.+0.j]
C. [0.+0.j 2.+0.j 0.+0.j 2.+0.j]
D. [0.+0.j 1.+0.j 0.+0.j 1.+0.j]

Solution

  1. Step 1: Understand input signal

    The signal is [1, 0, -1, 0], a simple 4-point sequence alternating positive and negative values.
  2. Step 2: Compute DFT manually or recall pattern

    DFT of this sequence results in complex values showing frequency components. The output is [0.+0.j, 0.+2.j, 0.+0.j, 0.-2.j] after rounding.
  3. Final Answer:

    [0.+0.j 0.+2.j 0.+0.j 0.-2.j] -> Option A
  4. Quick Check:

    DFT of alternating signal = complex freq components [OK]
Hint: Look for imaginary parts in DFT of alternating signals [OK]
Common Mistakes:
  • Ignoring imaginary parts in output
  • Confusing zero arrays with actual DFT
  • Misreading numpy rounding output
4. Identify the error in this Python code snippet for computing DFT:
import numpy as np
signal = [1, 2, 3, 4]
dft = np.fft.fft(signal, n=2)
print(dft)
medium
A. np.fft.fft does not accept the parameter n
B. The signal must be a numpy array, not a list
C. The parameter n=2 truncates the DFT length incorrectly
D. The print statement syntax is incorrect

Solution

  1. Step 1: Understand parameter n in np.fft.fft

    The parameter n sets the length of the DFT. If shorter than signal length, signal is truncated.
  2. Step 2: Effect of n=2 on signal length 4

    Setting n=2 truncates the signal from length 4 to 2, losing data and changing the DFT result unexpectedly.
  3. Final Answer:

    The parameter n=2 truncates the DFT length incorrectly -> Option C
  4. Quick Check:

    n parameter truncates or pads signal [OK]
Hint: Check if n parameter matches signal length [OK]
Common Mistakes:
  • Assuming n pads signal always
  • Thinking signal must be numpy array
  • Believing np.fft.fft disallows n parameter
5. You have a noisy signal sampled at 8 points: [1, 0, 1, 0, 1, 0, 1, 0]. You want to remove high-frequency noise by zeroing out the last 4 DFT coefficients and then reconstruct the signal using inverse DFT. Which Python code snippet correctly performs this?
hard
A. dft = np.fft.fft(signal) dft[0:4] = 0 clean_signal = np.fft.ifft(dft).real
B. dft = np.fft.fft(signal) dft[:4] = 0 clean_signal = np.fft.ifft(dft).real
C. dft = np.fft.fft(signal) dft[2:] = 0 clean_signal = np.fft.ifft(dft).real
D. dft = np.fft.fft(signal) dft[4:] = 0 clean_signal = np.fft.ifft(dft).real

Solution

  1. Step 1: Compute DFT of signal

    Use np.fft.fft(signal) to get frequency components.
  2. Step 2: Zero out last 4 coefficients to remove high frequencies

    Since signal length is 8, last 4 coefficients are dft[4:]. Setting them to zero removes high-frequency noise.
  3. Step 3: Reconstruct signal with inverse DFT

    Use np.fft.ifft(dft).real to get cleaned time-domain signal.
  4. Final Answer:

    dft = np.fft.fft(signal) dft[4:] = 0 clean_signal = np.fft.ifft(dft).real -> Option D
  5. Quick Check:

    Zero last half DFT coefficients to filter high freq [OK]
Hint: Zero last half DFT coefficients to remove high frequencies [OK]
Common Mistakes:
  • Zeroing first half instead of last half
  • Zeroing wrong slice indices
  • Forgetting to take real part after inverse DFT
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