diff options
author | sara <sara.halter@gmx.ch> | 2021-11-27 21:51:50 +0100 |
---|---|---|
committer | sara <sara.halter@gmx.ch> | 2021-11-27 21:51:50 +0100 |
commit | 90a89f6f5ba15a983e1ea50e87d019bcd567ba2f (patch) | |
tree | f6954b6e28b3f613df934891a216dc8e45f8fd2d | |
parent | Notebook aufgereumt (diff) | |
download | Fading-90a89f6f5ba15a983e1ea50e87d019bcd567ba2f.tar.gz Fading-90a89f6f5ba15a983e1ea50e87d019bcd567ba2f.zip |
FIR Filter Block in GNU Radio ink. fload variabeln möglichkeit erstellt
-rw-r--r-- | notebooks/FIR_mehrere_V2.ipynb | 108 | ||||
-rw-r--r-- | simulation/QAM_Fading/qam_fading_V2_eigerner_block.grc | 5 | ||||
-rwxr-xr-x | simulation/QAM_Fading/qam_fading_block.py | 2 | ||||
-rw-r--r-- | src/gr-fadingui/grc/fadingui_multipath_fading.block.yml | 13 | ||||
-rw-r--r-- | src/gr-fadingui/python/multipath_fading.py | 67 |
5 files changed, 144 insertions, 51 deletions
diff --git a/notebooks/FIR_mehrere_V2.ipynb b/notebooks/FIR_mehrere_V2.ipynb index 6e213f3..6d07670 100644 --- a/notebooks/FIR_mehrere_V2.ipynb +++ b/notebooks/FIR_mehrere_V2.ipynb @@ -153,7 +153,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] @@ -182,7 +182,7 @@ { "data": { "text/plain": [ - "array([1, 8, 9, 1, 3, 5, 7, 9, 8, 4, 8, 2, 6, 1, 5, 5, 3, 5, 0, 7])" + "array([2, 5, 5, 9, 0, 3, 6, 7, 7, 9, 5, 9, 4, 9, 5, 9, 6, 2, 2, 5])" ] }, "execution_count": 8, @@ -224,8 +224,8 @@ { "data": { "text/plain": [ - "array([0., 0., 1., 8., 9., 1., 3., 5., 7., 9., 8., 4., 8., 2., 6., 1., 5.,\n", - " 5., 3., 5., 0., 7., 0., 0., 0.])" + "array([0., 0., 2., 5., 5., 9., 0., 3., 6., 7., 7., 9., 5., 9., 4., 9., 5.,\n", + " 9., 6., 2., 2., 5., 0., 0., 0.])" ] }, "execution_count": 10, @@ -247,7 +247,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 27, "id": "79e18131", "metadata": {}, "outputs": [ @@ -255,23 +255,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "Tap with amplitude=1, delay=7.5\n", - "Creating filter of order N=15.0\n" + "Tap with amplitude=1, delay=5\n", + "Creating filter of order N=11.0\n", + "[ 1.00000000e+00 -3.89817183e-17 3.89817183e-17 -3.89817183e-17\n", + " 3.89817183e-17 1.00000000e+00 3.89817183e-17 -3.89817183e-17\n", + " 3.89817183e-17 -3.89817183e-17 3.89817183e-17 -3.89817183e-17]\n" ] }, { "data": { - "text/plain": [ - "<StemContainer object of 3 artists>" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] @@ -284,26 +277,35 @@ ], "source": [ "\n", - "delay = 7.5\n", + "delay = 5\n", "ampl = 1\n", "print(f\"Tap with amplitude={ampl}, delay={delay}\")\n", "\n", + " \n", "order = 2 * np.floor(delay) + 1 #N\n", "print(f\"Creating filter of order N={order}\")\n", "\n", + "\n", "skip = np.floor(delay) - (order - 1) / 2 #M\n", "assert skip >= 0\n", "\n", - "samples = np.arange(0, order +1) - delay\n", + "samples = np.arange(0, order+1)\n", + "\n", "\n", - "h = ampl*(np.sinc(samples)) #sinc\n", + "h = ampl*(np.sinc(samples-delay)) #sinc\n", "\n", - "plt.stem(samples, h)" + "\n", + "h[0] = 1\n", + "\n", + "print(h)\n", + "\n", + "plt.stem(samples, h)\n", + "plt.show()\n" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 26, "id": "c89c83ae", "metadata": {}, "outputs": [ @@ -322,16 +324,16 @@ { "data": { "text/plain": [ - "[<matplotlib.lines.Line2D at 0x7f0dfe9b7850>]" + "[<matplotlib.lines.Line2D at 0x7f5b33445e50>]" ] }, - "execution_count": 13, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] @@ -362,6 +364,60 @@ "id": "d51d8a62", "metadata": {}, "outputs": [], + "source": [ + "\n", + "delay = [5,6.2]\n", + "ampl = [4,1]\n", + "print(f\"Tap with amplitude={ampl}, delay={delay}\")\n", + "\n", + "max_order = 2 * np.floor(np.max(delay)) + 1\n", + "max_samples = np.arange(0, max_order +1) \n", + "max_len = len(max_samples)\n", + "print(max_len)\n", + "\n", + "sum_x = np.zeros(int(max_len))\n", + "\n", + "for (a,d) in zip(ampl,delay):\n", + " \n", + " order = 2 * np.floor(d) + 1\n", + " \n", + " skip = np.floor(d) - (order - 1) / 2 #M sollte immer 0 sein \n", + " assert skip >= 0\n", + "\n", + " samples = np.arange(0, order+1 ) \n", + "\n", + " h = a*(np.sinc(samples-d)) #sinc\n", + " h_len = np.concatenate([h, np.zeros(max_len-len(h))])\n", + " print(h_len)\n", + " sum_x += h_len\n", + " \n", + "\n", + "sum_x[0] = 1\n", + "print(sum_x)\n", + "\n", + "\n", + "\n", + "plt.stem(max_samples, sum_x)\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "81b4ff57", + "metadata": {}, + "outputs": [], + "source": [ + "delay = [5,6]\n", + "np.max(delay)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "330915ff", + "metadata": {}, + "outputs": [], "source": [] } ], diff --git a/simulation/QAM_Fading/qam_fading_V2_eigerner_block.grc b/simulation/QAM_Fading/qam_fading_V2_eigerner_block.grc index 1ba7d1c..23cb577 100644 --- a/simulation/QAM_Fading/qam_fading_V2_eigerner_block.grc +++ b/simulation/QAM_Fading/qam_fading_V2_eigerner_block.grc @@ -808,9 +808,10 @@ blocks: parameters: affinity: '' alias: '' - amplitudes: '[0.2,0.2]' + amplitudes: '[0.2, 0.2]' comment: '' - delays: '[sps+1,sps+1]' + delays: '[4,4]' + los: 'True' maxoutbuf: '0' minoutbuf: '0' states: diff --git a/simulation/QAM_Fading/qam_fading_block.py b/simulation/QAM_Fading/qam_fading_block.py index 8186175..5622e69 100755 --- a/simulation/QAM_Fading/qam_fading_block.py +++ b/simulation/QAM_Fading/qam_fading_block.py @@ -491,7 +491,7 @@ class qam_fading_block(gr.top_block, Qt.QWidget): self.plots_grid_layout_0.setRowStretch(r, 1) for c in range(0, 1): self.plots_grid_layout_0.setColumnStretch(c, 1) - self.fadingui_multipath_fading_0 = fadingui.multipath_fading(amplitudes=[0.2,0.2], delays=[sps+1,sps+1]) + self.fadingui_multipath_fading_0 = fadingui.multipath_fading(amplitudes=[0.2, 0.2], delays=[4,4]) self._fading_1_range = Range(1, 30, 1, 2, 200) self._fading_1_win = RangeWidget(self._fading_1_range, self.set_fading_1, 'Fading', "counter_slider", int) self.params_grid_layout_2.addWidget(self._fading_1_win, 1, 0, 1, 1) diff --git a/src/gr-fadingui/grc/fadingui_multipath_fading.block.yml b/src/gr-fadingui/grc/fadingui_multipath_fading.block.yml index e116467..1d374ac 100644 --- a/src/gr-fadingui/grc/fadingui_multipath_fading.block.yml +++ b/src/gr-fadingui/grc/fadingui_multipath_fading.block.yml @@ -12,12 +12,19 @@ templates: # * label (label shown in the GUI) # * dtype (e.g. int, float, complex, byte, short, xxx_vector, ...) parameters: -- id: amplitudes - label: Amplitudes - dtype: raw - id: delays label: Delays + dtype: complex_vector +- id: amplitudes + label: Amplitudes dtype: raw +- id: los + label: LOS/NLOS + options: ['True', 'False'] + option_labels: ['LOS', 'NLOS'] + #default: 'False' + dtype: bool + #hide: ${ 'none' if los == 'False' else 'part' } # Make one 'inputs' list entry per input and one 'outputs' list entry per output. # Keys include: diff --git a/src/gr-fadingui/python/multipath_fading.py b/src/gr-fadingui/python/multipath_fading.py index 01f2dbe..02b3bb4 100644 --- a/src/gr-fadingui/python/multipath_fading.py +++ b/src/gr-fadingui/python/multipath_fading.py @@ -44,45 +44,74 @@ class multipath_fading(gr.sync_block): self.amplitudes = amplitudes self.delays = delays self.temp = [0] - # if los: - # self.amplitudes.append(1) - # self.delays.append(0) - self.los= 1 - #self.fir = + log.debug(los) #TO DO: True False unterscheidung + if los == True: + self.los = 1 + log.debug("Los True") + else: + self.los = 0 + log.debug("Los False") + + + + def work(self, input_items, output_items): """example: multiply with constant""" inp = input_items[0] oup = output_items[0] - if len(self.amplitudes) != len(self.delays): + if len(self.amplitudes) != len(self.delays): # Test: Es muss gleich viele Werte für Delays und Amplituden haben. raise Exception("Amplitudes and Delay length dont match") + + #TO DO negativ check + + + # raise Exception("Delay length can't be one") #if np.min(self.delays)<=1: # raise Exception("Delay length can't be one") - max_len = np.max(self.delays) - sum_x = np.zeros(max_len) - for(a,d) in zip(self.amplitudes,self.delays): + + #max_len = np.max(self.delays) #Max Werte herausfinden für länge + #sum_x = np.zeros(max_len) + + max_order = 2 * np.floor(np.max(self.delays)) + 1 + max_samples = np.arange(0, max_order +1) + max_len = len(max_samples) #Für Filter + + sum_x = np.zeros(int(max_len)) + + for (a,d) in zip(self.amplitudes,self.delays): # if d-1 <= 0: # x = np.concatenate([[a], np.zeros(max_len-1)]) - # else: - x = np.concatenate([np.zeros(d-1), [a], np.zeros(max_len-d)]) - sum_x += x + # else: + order = 2 * np.floor(d) + 1 + + skip = np.floor(d) - (order - 1) / 2 #M sollte immer 0 sein + assert skip >= 0 + + samples = np.arange(0, order +1) + + h = a*(np.sinc(samples-d)) #sinc + h_len = np.concatenate([h, np.zeros(max_len-len(h))]) + + sum_x += h_len + + #x = np.concatenate([np.zeros(d-1), [a], np.zeros(max_len-d)]) + #sum_x += x sum_x[0] = self.los - log.debug(sum_x) - - #H_int = fft(sum_x) - - #h = ifft(H_int) + #log.debug(sum_x) - #h[0]=1 y = np.convolve(inp, sum_x) + # signal_shifted = np.convolve(h, inp, mode='full') + # y = signal_shifted + + #y+=np.concatenate([self.temp,np.zeros(len(y)-len(self.temp))]) y+=np.concatenate([self.temp,np.zeros(len(y)-len(self.temp))]) - oup[:] = y[:len(inp)] self.temp = y[len(inp):] |