📖 Scenario: You are working with simple wave signals in a science lab. Each signal can be described by three properties: amplitude (how tall the wave is), frequency (how fast the wave repeats), and phase (where the wave starts).Understanding these properties helps in analyzing sound waves, light waves, or any repeating signals in real life.
🎯 Goal: You will create a data structure to hold signals with their amplitude, frequency, and phase. Then, you will select signals with frequency above a certain threshold and finally print those selected signals.
📋 What You'll Learn
Create a dictionary called signals with signal names as keys and their properties as nested dictionaries with keys 'amplitude', 'frequency', and 'phase'.
Create a variable called freq_threshold to hold the frequency cutoff value.
Use a dictionary comprehension to create a new dictionary called high_freq_signals containing only signals with frequency greater than freq_threshold.
Print the high_freq_signals dictionary.
💡 Why This Matters
🌍 Real World
Signal properties like amplitude, frequency, and phase are used in audio processing, telecommunications, and physics to analyze and manipulate waves.
💼 Career
Understanding how to handle and filter signal data is important for roles in data science, engineering, and research involving time series or wave data.
Progress0 / 4 steps
1
Create the signals dictionary
Create a dictionary called signals with these exact entries: 'signal1' with amplitude 5, frequency 50, phase 0; 'signal2' with amplitude 3, frequency 20, phase 1.57; 'signal3' with amplitude 4, frequency 75, phase 3.14.
Signal Processing
Hint
Use a dictionary with keys as signal names and values as dictionaries for properties.
2
Set the frequency threshold
Create a variable called freq_threshold and set it to 30.
Signal Processing
Hint
Just create a variable named freq_threshold and assign 30 to it.
3
Filter signals by frequency
Use a dictionary comprehension to create a new dictionary called high_freq_signals that contains only the signals from signals where the 'frequency' is greater than freq_threshold.
Signal Processing
Hint
Use dictionary comprehension with for name, props in signals.items() and filter by props['frequency'] > freq_threshold.
4
Print the filtered signals
Print the high_freq_signals dictionary.
Signal Processing
Hint
Use print(high_freq_signals) to show the filtered signals.
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
Step 1: Understand amplitude meaning
Amplitude measures the height or strength of a wave, showing how strong the signal is.
Step 2: Compare with other properties
Frequency is how often the wave repeats, phase shifts the start, wavelength is distance, not height.
Final Answer:
Amplitude -> Option B
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
Step 1: Recall sine wave formula
The sine wave formula is amplitude * sin(2π * frequency * time).
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).
Final Answer:
3 * np.sin(2 * np.pi * 5 * t) -> Option C
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
Step 1: Calculate time points
t = [0, 0.25, 0.5, 0.75, 1]
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. ]
Final Answer:
[ 2. 0. -2. 0. 2. ] -> Option A
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
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.
Step 2: Correct placement for frequency
Frequency multiplier must be inside sine: 2 * np.pi * 2 * t.
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
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
Step 1: Adjust amplitude and frequency
Original amplitude is 5, halved is 2.5. Original frequency is 3, doubled is 6.
Step 2: Keep phase shift same
Phase shift π/4 remains unchanged in the new expression.
Final Answer:
y = 2.5 * np.sin(2 * np.pi * 6 * t + π/4) -> Option A
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 unknownstrongwhile earning +1 Grip toward your certificate.