aboutsummaryrefslogtreecommitdiffstats
path: root/notebooks/FIR_mehrere.ipynb
blob: 1be42348e54980fb645a7fd65e8242c5514ca0b4 (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
{
 "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": "code",
   "execution_count": 6,
   "id": "6dc4dc1f",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_2862/4026507591.py:1: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray\n",
      "  np.array(x)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([list([1, 0, 0, 0, 0.2]), list([1, 0, 0, 0, 0, 0, 0.5]),\n",
       "       list([1, 0, 0, 0.8])], dtype=object)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.array(x)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5ad0edf9",
   "metadata": {},
   "source": [
    "# Dealy\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "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 = 2.5\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": 8,
   "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\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": [
    "# Frequensbereich Faltung "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "efc93b69",
   "metadata": {},
   "outputs": [],
   "source": [
    "delay = 3.4\n",
    "amplitude = .2\n",
    "\n",
    "d_int = int(np.floor(delay))\n",
    "d_frac = delay - d_int\n",
    "\n",
    "h = np.concatenate([np.zeros(d_int-1), [amplitude], np.zeros(3)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "43372541",
   "metadata": {},
   "outputs": [],
   "source": [
    "H_int = fft(h_int)\n",
    "#H = H_int * np.exp(-1j*d_frac)\n",
    "h = ifft(H_int)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "a32cb580",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<StemContainer object of 3 artists>"
      ]
     },
     "execution_count": 13,
     "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, h)\n",
    "\n",
    "plt.stem(test, linefmt=\"C0-\")\n",
    "plt.stem(y, linefmt='C1-')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e7b9d068",
   "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
}