29 plt.
ylabel("Magnitude")
30 [Link](True)
31 [Link]([Link](-10, 10, 1))
32
33 [Link]()
Figure 1: Generated Square Wave Signal
3 Plotting the Impulse Signal
1 \large
2 import numpy as np
3 import [Link] as plt
4
5 h = [Link]('/content/drive/MyDrive/[Link]')
6
7 [Link](figsize=(10, 6))
8 [Link](h)
9 [Link]("Impulse Response")
10 [Link]("Sample Index")
11 [Link]("Amplitude")
12 [Link](True)
13 [Link]([Link](0, len(h), 100))
14 [Link]()
Figure 2: Impulse Response
4 Fast Convolution Using Overlap-Add Approach
1 \large
2 import numpy as np
3 import [Link] as plt
4 import time
5
6 def overlap_add_convolution(x, h, seg_len):
7 h_len = len(h)
8 h_padded = [Link](h, (0, seg_len - 1), 'constant')
9 y = [Link](len(x) + h_len - 1)
10 start_time = [Link]()
11
12 for start_idx in range(0, len(x), seg_len):
13 end_idx = start_idx + seg_len
14 segment = x[start_idx:end_idx]
15 if len(segment) < seg_len:
16 segment = [Link](segment, (0, seg_len - len(segment)), 'constant')
17
18 X_f = [Link](segment, len(h_padded))