Bird
Raised Fist0
Signal Processingdata~5 mins

Signal properties (amplitude, frequency, phase) in Signal Processing - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Signal properties (amplitude, frequency, phase)
O(n)
Understanding Time Complexity

We want to understand how the time to analyze signal properties changes as the signal length grows.

How does the work needed to find amplitude, frequency, and phase grow with input size?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


import math

# signal is a list of sampled values
n = len(signal)
amplitude = max(signal) - min(signal)

# frequency estimation using zero crossings
zero_crossings = 0
for i in range(1, n):
    if (signal[i-1] < 0 and signal[i] >= 0) or (signal[i-1] >= 0 and signal[i] < 0):
        zero_crossings += 1

frequency = zero_crossings / (2 * duration)

# phase estimation (simplified)
phase = math.atan2(signal[1] - signal[0], 1)  # example calculation

This code calculates amplitude by finding max and min, estimates frequency by counting zero crossings, and computes a simple phase estimate.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Loop over the signal samples to count zero crossings.
  • How many times: The loop runs once for each sample except the first, so about n-1 times.
How Execution Grows With Input

As the signal length grows, the number of steps to find amplitude and count zero crossings grows roughly the same way.

Input Size (n)Approx. Operations
10About 20 operations (finding max, min, and zero crossings)
100About 200 operations
1000About 2000 operations

Pattern observation: The work grows roughly in direct proportion to the signal length.

Final Time Complexity

Time Complexity: O(n)

This means the time to analyze the signal grows linearly as the signal gets longer.

Common Mistake

[X] Wrong: "Counting zero crossings takes constant time regardless of signal length."

[OK] Correct: You must check each pair of samples to find zero crossings, so the time grows with the number of samples.

Interview Connect

Understanding how signal analysis time grows helps you explain your approach clearly and shows you can think about efficiency in real tasks.

Self-Check

"What if we used a more complex frequency estimation method that compares every sample to every other sample? How would the time complexity change?"

Practice

(1/5)
1. Which property of a signal describes how tall or strong the wave is?
easy
A. Frequency
B. Amplitude
C. Phase
D. Wavelength

Solution

  1. Step 1: Understand amplitude meaning

    Amplitude measures the height or strength of a wave, showing how strong the signal is.
  2. Step 2: Compare with other properties

    Frequency is how often the wave repeats, phase shifts the start, wavelength is distance, not height.
  3. Final Answer:

    Amplitude -> Option B
  4. Quick Check:

    Amplitude = wave height [OK]
Hint: Amplitude means wave height or strength [OK]
Common Mistakes:
  • Confusing amplitude with frequency
  • Thinking phase affects height
  • Mixing wavelength with amplitude
2. Which of the following is the correct way to represent a sine wave with amplitude 3 and frequency 5 Hz in Python using numpy?
t = np.linspace(0, 1, 500)
y = ?
easy
A. 3 + np.sin(2 * np.pi * 5 * t)
B. np.sin(3 * 2 * np.pi * 5 * t)
C. 3 * np.sin(2 * np.pi * 5 * t)
D. 5 * np.sin(2 * np.pi * 3 * t)

Solution

  1. Step 1: Recall sine wave formula

    The sine wave formula is amplitude * sin(2π * frequency * time).
  2. Step 2: Match formula to options

    3 * np.sin(2 * np.pi * 5 * t) matches amplitude 3 and frequency 5 correctly as 3 * sin(2π * 5 * t).
  3. Final Answer:

    3 * np.sin(2 * np.pi * 5 * t) -> Option C
  4. Quick Check:

    Amplitude * sin(2π * frequency * t) [OK]
Hint: Amplitude multiplies sine, frequency inside sine argument [OK]
Common Mistakes:
  • Multiplying frequency by amplitude inside sine
  • Adding amplitude instead of multiplying
  • Swapping amplitude and frequency
3. Given the code:
import numpy as np
t = np.linspace(0, 1, 5)
y = 2 * np.sin(2 * np.pi * 1 * t + np.pi/2)
print(np.round(y, 2))

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

Solution

  1. Step 1: Calculate time points

    t = [0, 0.25, 0.5, 0.75, 1]
  2. Step 2: Compute y values

    y = 2 * sin(2π * 1 * t + π/2) = 2 * cos(2π * t) due to phase shift π/2.
    Values: 2*cos(0)=2, 2*cos(π/2)=0, 2*cos(π)=-2, 2*cos(3π/2)=0, 2*cos(2π)=2
    np.round(y, 2) prints [ 2. 0. -2. 0. 2. ]
  3. Final Answer:

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

    Phase π/2 shifts sine to cosine [OK]
Hint: Phase π/2 shifts sine to cosine wave [OK]
Common Mistakes:
  • Ignoring phase shift
  • Rounding errors
  • Mixing sine and cosine values
4. Identify the error in this code snippet that tries to create a sine wave with amplitude 4 and frequency 2 Hz:
import numpy as np
t = np.linspace(0, 1, 100)
y = 4 * np.sin(2 * np.pi * t) * 2
medium
A. The time vector t should be integers, not floats
B. Amplitude should be added, not multiplied
C. np.linspace should use 0 to 2 instead of 0 to 1
D. The frequency multiplier is in the wrong place; it should be inside the sine argument as 2 * np.pi * 2 * t

Solution

  1. Step 1: Analyze sine argument order

    The sine argument is 2π * t (frequency 1 Hz), but *2 is outside sin(), incorrectly scaling the amplitude instead of frequency.
  2. Step 2: Correct placement for frequency

    Frequency multiplier must be inside sine: 2 * np.pi * 2 * t.
  3. Final Answer:

    The frequency multiplier is in the wrong place; it should be inside the sine argument as 2 * np.pi * 2 * t -> Option D
  4. Quick Check:

    Frequency must multiply time inside sine [OK]
Hint: Write frequency right after 2π inside sine [OK]
Common Mistakes:
  • Multiplying amplitude incorrectly
  • Using wrong time vector type
  • Changing linspace range unnecessarily
5. You have a signal defined as y = 5 * np.sin(2 * np.pi * 3 * t + π/4). If you want to double the frequency and halve the amplitude while keeping the phase shift the same, which expression is correct?
hard
A. y = 2.5 * np.sin(2 * np.pi * 6 * t + π/4)
B. y = 10 * np.sin(2 * np.pi * 1.5 * t + π/4)
C. y = 2.5 * np.sin(2 * np.pi * 3 * t + π/2)
D. y = 5 * np.sin(2 * np.pi * 6 * t)

Solution

  1. Step 1: Adjust amplitude and frequency

    Original amplitude is 5, halved is 2.5. Original frequency is 3, doubled is 6.
  2. Step 2: Keep phase shift same

    Phase shift π/4 remains unchanged in the new expression.
  3. Final Answer:

    y = 2.5 * np.sin(2 * np.pi * 6 * t + π/4) -> Option A
  4. Quick Check:

    Amplitude halved, frequency doubled, phase same [OK]
Hint: Multiply frequency by 2, amplitude by 0.5, keep phase [OK]
Common Mistakes:
  • Changing phase shift incorrectly
  • Multiplying amplitude instead of halving
  • Swapping frequency and amplitude values
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