aboutsummaryrefslogtreecommitdiffstats
path: root/notebooks/FIR_mehrere.ipynb
blob: 710db9994621b1ccdd2875f41f68bcdc7468b01e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "d828ae1c",
   "metadata": {},
   "source": [
    "# FIR Filter Parameters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "9aed9f51",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np \n",
    "from numpy.fft import fft,ifft,fftshift\n",
    "import matplotlib.pyplot as plt\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "9a16a6d2",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Anfangs werte noch variabel machen \n",
    "delays = [3,5,2]\n",
    "ampl = [0.2,0.5,0.8]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "04de21c9",
   "metadata": {},
   "outputs": [],
   "source": [
    "#if len(delays)!= len(ampl):\n",
    "# Exeption ? "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "01fe08fe",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[1, 0, 0, 0, 0.2]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[1]+[0 for n in range (0,delays[0])]+[ampl[0]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9ab70ca5",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "f55da062",
   "metadata": {},
   "outputs": [],
   "source": [
    "i = len(ampl)\n",
    "x = [([1]+[0 for n in range (0,delays[i])]+[ampl[i]]) for i in range(0,i)]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5ad0edf9",
   "metadata": {},
   "source": [
    "# Dealy Window\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "bf92d73a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "d = 3.3\n",
    "k = np.linspace(-5,10,1000)\n",
    "h_ideal = np.sinc(k-d)\n",
    "plt.plot(k,h_ideal)\n",
    "plt.show()\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "dd93e444",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "n = 4.5\n",
    "window_sample= np.arange(np.round(d-(n-1)/2),np.round(d+(n+1)/2))\n",
    "window = []\n",
    "for ws in window_sample:  \n",
    "    idx = (np.abs(k-ws)).argmin()\n",
    "    window.append(idx)\n",
    "    \n",
    "plt.plot(k,h_ideal)\n",
    "plt.plot(window_sample,h_ideal[window],\"-*\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "12b0c2d2",
   "metadata": {},
   "source": [
    "# FIR"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "efc93b69",
   "metadata": {},
   "outputs": [],
   "source": [
    "delay = 3\n",
    "amplitude = 1\n",
    "\n",
    "d_int = int(np.floor(delay))\n",
    "d_frac = delay - d_int\n",
    "\n",
    "h_int = np.concatenate([np.zeros(d_int-1), [amplitude], np.zeros(3)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "43372541",
   "metadata": {},
   "outputs": [],
   "source": [
    "H_int = fft(h_int)\n",
    "h = ifft(H_int)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "a32cb580",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<StemContainer object of 3 artists>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "test = np.random.randint(0, 10, size = 20)\n",
    "y = np.convolve(test.real, h_int)\n",
    "\n",
    "plt.stem(test, linefmt=\"C0-\")\n",
    "plt.stem(y, linefmt='C1-')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "39fb3489",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([4, 1, 7, 5, 2, 8, 1, 0, 5, 9, 6, 1, 0, 9, 5, 5, 1, 2, 6, 5])"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "7fd06347",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0., 0., 1., 0., 0., 0.])"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "h_int"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "a9612999",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0., 0., 4., 1., 7., 5., 2., 8., 1., 0., 5., 9., 6., 1., 0., 9., 5.,\n",
       "       5., 1., 2., 6., 5., 0., 0., 0.])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "706a51b1",
   "metadata": {},
   "source": [
    "# FIR mit Delay \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "id": "d51e107c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "System frequencies fs=10, T=0.1\n",
      "Tap with amplitude=4, delay=0.7230000000000001\n",
      "Creating filter of order N=15.0\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<StemContainer object of 3 artists>"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAD4CAYAAADxeG0DAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAQkklEQVR4nO3db2xeZ3nH8e81N4DLH3moZm2cdGET8qjowMhidJX2ooAc/qjNKk2CDcQ0pPTF2MoEzhqQJu3NWskTY9rQRgSsSHShVQhZVbGZjlIhJtbi1CVpGzyqAmmcsrqqzL9ZTepce+HHxXac5rGfY59z+/l+JCt+ju37XMo5/vl+7nOf+0RmIkkq16/UXYAkqTMGuSQVziCXpMIZ5JJUOINckgp3SR07veyyy3LXrl117FqSinX06NFnMrN/5fZagnzXrl1MTEzUsWtJKlZE/Gi17Q6tSFLhDHJJKpxBLkmFM8glqXCVBXlE9ETEZETcU1WbkqSLq3LWys3ACeBVFbYpdeTI5DRj41Ocnp1je18voyOD7BkaqLssqVKV9MgjYgfwbuCzVbQnVeHI5DT7Dx9nenaOBKZn59h/+DhHJqfrLk2qVFVDK58C9gHnLvQNEbE3IiYiYmJmZqai3UoXNjY+xdzZ+WXb5s7OMzY+VVNF0sboOMgj4j3A05l59MW+LzMPZOZwZg739593Y5JUudOzc2vaLpWqih75tcD1EfFD4EvAdRHxxQralTqyva93TdulUnUc5Jm5PzN3ZOYu4L3AfZn5/o4rkzo0OjJI77aeZdt6t/UwOjJYU0XSxqhlrRVpMyzOTtl36Bhn5s8x4KwVbVGVBnlm3g/cX2WbUif2DA1w8MGTANx50zU1VyNtDO/slKTCGeSSVDiDXJIKZ5BLUuEMckkqnEEuSYUzyCWpcN4QJK2By+KqiQxyqU2Ly+Iurqi4uCwuYJirVg6tSG1yWVw1lUEutcllcdVUBrnUJpfFVVMZ5FKbXBZXTeXFTqlNLourpjLIpTVwWVw1kUMrklQ4g1ySCmeQS1LhDHJJKpxBLkmFM8glqXAGuSQVziCXpMIZ5JJUOINckgpnkEtS4QxySSqcQS5JhTPIJalwLmOrRvEp9dLaGeRqDJ9SL62PQytqDJ9SL61Px0EeES+LiAcj4rsR8WhE/HUVhan7+JR6aX2q6JE/B1yXmW8E3gTsjoi3VtCuuoxPqZfWp+MgzwU/b73c1vrITttV9/Ep9dL6VDJGHhE9EfEw8DRwb2Y+sMr37I2IiYiYmJmZqWK32mL2DA1w641X85KehdNyoK+XW2+82gud0kVUMmslM+eBN0VEH/CViHhDZj6y4nsOAAcAhoeH7bFrVT6lXlq7SmetZOYscD+wu8p2JUkXVsWslf5WT5yI6AXeDnyv03YlSe2pYmjlCuALEdHDwh+GuzLzngralSS1oeMgz8xjwFAFtUiS1sE7OyWpcAa5JBXOIJekwhnkklQ4g1ySCmeQS1LhDHJJKpxBLkmFM8glqXAGuSQVziCXpMIZ5JJUOINckgpnkEtS4QxySSqcQS5JhTPIJalwBrkkFc4gl6TCGeSSVDiDXJIKZ5BLUuEMckkq3CV1FyB1uyOT04yNT3F6do7tfb2MjgyyZ2ig7rJUEINcqtGRyWn2Hz7O3Nl5AKZn59h/+DiAYa62ObQi1WhsfOqFEF80d3aesfGpmipSiQxyqUanZ+fWtF1ajUEu1Wh7X++atkurMcilGo2ODNK7rWfZtt5tPYyODNZUkUrkxU6pRosXNPcdOsaZ+XMMOGtF62CQSzXbMzTAwQdPAnDnTdfUXI1K5NCKJBWu4yCPiJ0R8Y2IOBERj0bEzVUUJklqTxVDK88DH83MhyLilcDRiLg3Mx+roG1J0kV03CPPzKcy86HW5z8DTgBeqZGkTVLpGHlE7AKGgAdW+dreiJiIiImZmZkqdytJXa2yII+IVwBfBj6SmT9d+fXMPJCZw5k53N/fX9VuJanrVRLkEbGNhRC/IzMPV9GmJKk9VcxaCeBzwInM/GTnJUmS1qKKHvm1wAeA6yLi4dbHuypoV5LUho6nH2bmt4CooBZJ0jp4Z6ckFc4gl6TCGeSSVDiDXJIKZ5BLUuEMckkqnEEuSYUzyCWpcAa5JBXOIJekwhnkklQ4g1ySCmeQS1LhDHJJKpxBLkmF63g9cnW3I5PTjI1PcXp2ju19vYyODLJnaKDusqSuYpBr3Y5MTrP/8HHmzs4DMD07x/7DxwEMc2kTObSidRsbn3ohxBfNnZ1nbHyqpoqk7mSQa91Oz86tabukjWGQa9229/WuabukjWGQa91GRwbp3dazbFvvth5GRwZrqkjqTl7s1LotXtDcd+gYZ+bPMeCsFakWBrk6smdogIMPngTgzpuuqbkaqTs5tCJJhTPIJalwBrkkFc4gl6TCGeSSVDiDXJIKZ5BLUuEMckkqnEEuSYWrJMgj4vMR8XREPFJFe5Kk9lXVI78d2F1RW5KkNagkyDPzm8CzVbQlSVqbTRsjj4i9ETERERMzMzObtVtJ2vI2Lcgz80BmDmfmcH9//2btVpK2PGetSFLhDHJJKlxV0w8PAt8GBiPiVER8qIp2JUkXV8kTgjLzfVW0I0laO4dWJKlwBrkkFc4gl6TCGeSSVDiDXJIKZ5BLUuEMckkqnEEuSYUzyCWpcAa5JBXOIJekwlWy1oqk5jgyOc3Y+BSnZ+fY3tfL6Mgge4YG6i6r623kcTHIpS3kyOQ0+w8fZ+7sPADTs3PsP3wcwDCv0UYfF4dWpC1kbHzqhbBYNHd2nrHxqZoqEmz8cSmmR+7bReniTs/OrWm7NsdGH5cieuSLb0umZ+dIfvm25MjkdN2lSY2yva93Tdu1OTb6uBQR5L5dlNozOjJI77aeZdt6t/UwOjJYU0WCjT8uRQyt+HZRas/icOO+Q8c4M3+OAYchG2Gjj0sRQb69r5fpVULbt4vS+fYMDXDwwZMA3HnTNTVXo0UbeVyKGFrx7aIkXVgRPXLfLkrShRUR5ODbRUmbp7TpzsUEuSRthhLvji1ijFySNkuJ050NcklaosTpzga5JC1R4t2xBrkkLVHidGcvdkrSEiVOdzbIJWmF0qY7O7QiSYUzyCWpcAa5JBWukiCPiN0RMRURj0fELVW0KUlqT8dBHhE9wKeBdwJXAe+LiKs6bVeS1J4qZq28BXg8M58AiIgvATcAj1XQ9jK77/9XLp95kh9961Udt/XMz5/jyWfneO75eV56SQ87X93LZa94aQVVdp8/fuqnAJUcl25sbyPa3Igau81GHecf9++EimfCVBHkA8CTS16fAn5n5TdFxF5gL8CVV165rh298+oreO7ET9b1s0s98/PneOKZX3DuXALw3PPzPPHMLwA6DvPHWgf/qiuqOfhNb6/qtrqxvY1os+r2NuK8afq5vVHHeej1V1TebhVBHqtsy/M2ZB4ADgAMDw+f9/V2XP7xj6/nx87zh7fdt+oThwb6evmvW67rqO19n/k2UN3c06a3p+6wEeeN53Z1qrjYeQrYueT1DuB0Be1umBIXxanCkclpJk/O8sAPnuXa2+7jyOR03SVJqkAVQf4d4HUR8dqIeAnwXuDuCtrdMCUuitOpxTWWz8yfA365xrJhLpWv4yDPzOeBDwPjwAngrsx8tNN2N1KJi+J0qsQ1liW1p5K1VjLzq8BXq2hrMywuflPSo5w61a3DSVI36NpFs/YMDWzp4F5pe1/vqhd4t/JwktQtvEW/S3TjcJLULbq2R95tunE4SeoWBnkX6bbhJKlbOLQiSYUzyCUVr9tvdjPIJRXNm90MckmF82Y3g1xS4bzZzSCXVLhuXDtpJYNcUtG82c155JIK581uBrmkLaDbb3ZzaEWSCmeQS1LhDHJJKpxBLkmFM8glvahuX8ekBAa5pAtyHZMyGOQVsueircZ1TMpgkFfEnou2ItcxKYNBXhF7LtqKXMekDAZ5Rey5aCtyHZMyGOQVseeirWjP0AC33ng1A329BDDQ18utN17d1bfDN5FrrVRkdGSQ/YePLxteseeiraDb1zEpgUFeEVdgk1QXg7xCVfdcFqcznpk/x7W33ecfBm0ZntvVcoy8oZzOqK3Kc7t6BnlDOZ1RW5XndvUM8oZyOqO2Ks/t6hnkDeV0Rm1VntvVM8gbyhsxtFV5blevoyCPiD+IiEcj4lxEDFdVlLwRQ1uX53b1IjPX/8MRrwfOAZ8BPpaZE+383PDwcE5MtPWtkqSWiDiamed1mjuaR56ZJ1qNd9KMJKkDjpFLUuEu2iOPiP8ELl/lS5/IzH9rd0cRsRfYC3DllVe2XaAk6cVdNMgz8+1V7CgzDwAHYGGMvIo2JUkOrUhS8TqdtfL7wD8A/cAs8HBmjrTxczPAj9a528uAZ9b5s5ul6TU2vT5ofo1Nrw+ssQpNq+/XM7N/5caOgrwOETGx2vSbJml6jU2vD5pfY9PrA2usQtPrW+TQiiQVziCXpMKVGOQH6i6gDU2vsen1QfNrbHp9YI1VaHp9QIFj5JKk5UrskUuSljDIJalwRQV5ROyOiKmIeDwibqm7nqUiYmdEfCMiTrSW9r257pouJCJ6ImIyIu6pu5aVIqIvIg5FxPda/5fX1F3TShHxF61j/EhEHIyIlzWgps9HxNMR8ciSba+OiHsj4vutf3+1YfWNtY7zsYj4SkT01VVfq57zalzytY9FREbEZXXUdjHFBHlE9ACfBt4JXAW8LyKuqreqZZ4HPpqZrwfeCvxpw+pb6mbgRN1FXMDfA/+Rmb8FvJGG1RkRA8CfA8OZ+QagB3hvvVUBcDuwe8W2W4CvZ+brgK+3Xtflds6v717gDZn528D/APs3u6gVbuf8GomIncA7gJObXVC7igly4C3A45n5RGaeAb4E3FBzTS/IzKcy86HW5z9jIYAat1J+ROwA3g18tu5aVoqIVwG/B3wOIDPPZOZsrUWt7hKgNyIuAS4FTtdcD5n5TeDZFZtvAL7Q+vwLwJ7NrGmp1erLzK9l5vOtl/8N7Nj0wpbXs9r/IcDfAfuAxs4MKSnIB4Anl7w+RQODEiAidgFDwAM1l7KaT7FwUp6ruY7V/AYwA/xLa+jnsxHx8rqLWiozp4G/ZaF39hTwk8z8Wr1VXdCvZeZTsNDRAF5Tcz0v5k+Af6+7iJUi4npgOjO/W3ctL6akIF/t6RWN+wsZEa8Avgx8JDN/Wnc9S0XEe4CnM/No3bVcwCXAm4F/yswh4BfUOxxwntY48w3Aa4HtwMsj4v31VlW2iPgEC0OTd9Rdy1IRcSnwCeCv6q7lYkoK8lPAziWvd9CAt7RLRcQ2FkL8jsw8XHc9q7gWuD4ifsjC0NR1EfHFekta5hRwKjMX38kcYiHYm+TtwA8ycyYzzwKHgd+tuaYL+d+IuAKg9e/TNddznoj4IPAe4I+yeTe1/CYLf7C/2/qd2QE8FBGrPZ+hViUF+XeA10XEayPiJSxcYLq75ppeEAvPu/sccCIzP1l3PavJzP2ZuSMzd7Hw/3dfZjamN5mZPwaejIjFx6m/DXisxpJWcxJ4a0Rc2jrmb6NhF2SXuBv4YOvzDwJtPwhmM0TEbuAvgesz8//qrmelzDyema/JzF2t35lTwJtb52mjFBPkrYsiHwbGWfjFuSszH623qmWuBT7AQi/34dbHu+ouqkB/BtwREceANwF/U285y7XeLRwCHgKOs/A7VPtt3BFxEPg2MBgRpyLiQ8BtwDsi4vsszLq4rWH1/SPwSuDe1u/LP9dV34vUWARv0ZekwhXTI5ckrc4gl6TCGeSSVDiDXJIKZ5BLUuEMckkqnEEuSYX7f1AeGtKnD28BAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "samp_rate = 10\n",
    "period = 1 / samp_rate\n",
    "print(f\"System frequencies fs={samp_rate}, T={period}\")\n",
    "\n",
    "delay = 7.23 * period\n",
    "ampl = 4\n",
    "print(f\"Tap with amplitude={ampl}, delay={delay}\")\n",
    "\n",
    "order = 2 * np.floor(delay / period) + 1\n",
    "print(f\"Creating filter of order N={order}\")\n",
    "\n",
    "skip = np.floor(delay / period) - (order - 1) / 2\n",
    "assert skip >= 0\n",
    "\n",
    "samples = np.arange(0, order + 1) * period - delay\n",
    "h = ampl*(np.sin(samp_rate * samples) / (samp_rate * samples))\n",
    "\n",
    "plt.stem(h)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "id": "c89c83ae",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<StemContainer object of 3 artists>"
      ]
     },
     "execution_count": 110,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "t = np.linspace(0, delay + period, samp_rate)\n",
    "f = np.sin(2 * np.pi * samp_rate * t)\n",
    "\n",
    "f_shift = np.convolve(h, f)[:len(f)]\n",
    "\n",
    "plt.stem(t, f, linefmt=\"C0-\")\n",
    "plt.stem(t, f_shift, linefmt='C1-')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "68a63dbd",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}