0
0
SciPydata~20 mins

Convolution (convolve) in SciPy - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Convolution Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of 1D convolution with 'full' mode
What is the output of this code snippet using scipy.signal.convolve with mode='full'?
SciPy
import numpy as np
from scipy.signal import convolve

x = np.array([1, 2, 3])
h = np.array([0, 1, 0.5])
result = convolve(x, h, mode='full')
print(result)
A[1. 2. 3. 0.5 0. ]
B[0. 1. 2. 3. 1.5]
C[0. 1. 2.5 4. 1.5]
D[1. 2.5 4. 1.5 0. ]
Attempts:
2 left
💡 Hint
Remember that 'full' mode returns the complete convolution, including edges.
data_output
intermediate
1:30remaining
Length of convolution result with 'valid' mode
Given two arrays a and b of lengths 7 and 3 respectively, what is the length of the result when convolving with mode='valid'?
SciPy
from scipy.signal import convolve

a = [1,2,3,4,5,6,7]
b = [0,1,0.5]
result = convolve(a, b, mode='valid')
print(len(result))
A7
B5
C9
D3
Attempts:
2 left
💡 Hint
Length in 'valid' mode is len(a) - len(b) + 1.
🔧 Debug
advanced
2:00remaining
Identify the error in convolution code
What error will this code raise when run?
SciPy
import numpy as np
from scipy.signal import convolve

x = np.array([1, 2, 3])
h = np.array([[0, 1], [0.5, 0]])
result = convolve(x, h)
print(result)
AValueError: x and h must have the same number of dimensions
BTypeError: unsupported operand type(s) for *: 'int' and 'list'
CNo error, prints a 2D convolution result
DIndexError: index out of bounds
Attempts:
2 left
💡 Hint
Check the shapes of the input arrays for convolution.
visualization
advanced
2:30remaining
Plotting convolution result of two signals
Which option correctly plots the convolution of two signals x and h using matplotlib?
SciPy
import numpy as np
from scipy.signal import convolve
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4])
h = np.array([0, 1, 0.5])
result = convolve(x, h, mode='full')

# Plot code here
Aplt.plot(result); plt.title('Convolution Result'); plt.show()
Bplt.scatter(range(len(result)), result); plt.title('Convolution Result'); plt.show()
Cplt.bar(range(len(result)), result); plt.title('Convolution Result'); plt.show()
Dplt.stem(result); plt.title('Convolution Result'); plt.show()
Attempts:
2 left
💡 Hint
Use a line plot to show the convolution values clearly.
🧠 Conceptual
expert
3:00remaining
Effect of convolution mode on output size
Which statement correctly describes the relationship between input sizes and output size for scipy.signal.convolve modes?
A'full' mode output length equals len(x); 'valid' mode output length equals len(h); 'same' mode output length equals len(x) - len(h) + 1
B'full' mode output length equals max(len(x), len(h)); 'valid' mode output length equals min(len(x), len(h)); 'same' mode output length is len(x) + len(h) - 1
C'full' mode output length is len(x) - len(h) + 1; 'valid' mode output length is len(x) + len(h) - 1; 'same' mode output length equals len(h)
D'full' mode output length is len(x) + len(h) - 1; 'valid' mode output length is len(x) - len(h) + 1; 'same' mode output length equals len(x)
Attempts:
2 left
💡 Hint
Recall the definitions of convolution modes and their output sizes.