aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsara <sara.halter@gmx.ch>2021-11-25 16:43:03 +0100
committersara <sara.halter@gmx.ch>2021-11-25 16:43:03 +0100
commit53a380c41e18ea4452ab9fd4e57942eda6a29a0b (patch)
tree918193754cdcdce98f8ed5c2a4e009c3b94cf9a1
parentCreate test files for correlator (diff)
downloadFading-53a380c41e18ea4452ab9fd4e57942eda6a29a0b.tar.gz
Fading-53a380c41e18ea4452ab9fd4e57942eda6a29a0b.zip
Test interpolation angefangen
Diffstat (limited to '')
-rw-r--r--notebooks/FIR_mehrere.ipynb405
-rw-r--r--simulation/QAM_Fading/epy_block_0.py6
-rw-r--r--simulation/QAM_Fading/qam_fading_V2_eigerner_block.grc98
-rwxr-xr-xsimulation/QAM_Fading/qam_fading_block.py60
4 files changed, 401 insertions, 168 deletions
diff --git a/notebooks/FIR_mehrere.ipynb b/notebooks/FIR_mehrere.ipynb
index 710db99..cb4a968 100644
--- a/notebooks/FIR_mehrere.ipynb
+++ b/notebooks/FIR_mehrere.ipynb
@@ -204,7 +204,7 @@
},
{
"data": {
- "image/png": "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\n",
+ "image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
@@ -232,7 +232,7 @@
{
"data": {
"text/plain": [
- "array([4, 1, 7, 5, 2, 8, 1, 0, 5, 9, 6, 1, 0, 9, 5, 5, 1, 2, 6, 5])"
+ "array([3, 6, 5, 2, 9, 9, 5, 9, 2, 1, 5, 8, 0, 5, 1, 6, 9, 9, 9, 8])"
]
},
"execution_count": 11,
@@ -274,8 +274,8 @@
{
"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.])"
+ "array([0., 0., 3., 6., 5., 2., 9., 9., 5., 9., 2., 1., 5., 8., 0., 5., 1.,\n",
+ " 6., 9., 9., 9., 8., 0., 0., 0.])"
]
},
"execution_count": 13,
@@ -297,7 +297,7 @@
},
{
"cell_type": "code",
- "execution_count": 107,
+ "execution_count": 14,
"id": "d51e107c",
"metadata": {},
"outputs": [
@@ -306,7 +306,7 @@
"output_type": "stream",
"text": [
"System frequencies fs=10, T=0.1\n",
- "Tap with amplitude=4, delay=0.7230000000000001\n",
+ "Tap with amplitude=4, delay=0.7250000000000001\n",
"Creating filter of order N=15.0\n"
]
},
@@ -316,13 +316,13 @@
"<StemContainer object of 3 artists>"
]
},
- "execution_count": 107,
+ "execution_count": 14,
"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>"
]
@@ -338,25 +338,25 @@
"period = 1 / samp_rate\n",
"print(f\"System frequencies fs={samp_rate}, T={period}\")\n",
"\n",
- "delay = 7.23 * period\n",
+ "delay = 7.25 * period\n",
"ampl = 4\n",
"print(f\"Tap with amplitude={ampl}, delay={delay}\")\n",
"\n",
- "order = 2 * np.floor(delay / period) + 1\n",
+ "order = 2 * np.floor(delay / period) + 1 #N\n",
"print(f\"Creating filter of order N={order}\")\n",
"\n",
- "skip = np.floor(delay / period) - (order - 1) / 2\n",
+ "skip = np.floor(delay / period) - (order - 1) / 2 #M\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",
+ "h = ampl*(np.sin(samp_rate * samples) / (samp_rate * samples)) #sinc\n",
"\n",
"plt.stem(h)"
]
},
{
"cell_type": "code",
- "execution_count": 110,
+ "execution_count": 15,
"id": "c89c83ae",
"metadata": {},
"outputs": [
@@ -366,13 +366,13 @@
"<StemContainer object of 3 artists>"
]
},
- "execution_count": 110,
+ "execution_count": 15,
"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>"
]
@@ -394,9 +394,382 @@
]
},
{
+ "cell_type": "markdown",
+ "id": "15f663c6",
+ "metadata": {},
+ "source": [
+ "# Test Delay "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "id": "afb9e748",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "System frequencies fs=10, T=0.1\n",
+ "Tap with amplitude=4, delay_freq=0.7250000000000001, delay_int=7\n",
+ "Creating filter of order N=15.0\n",
+ "samples_freq[-0.725 -0.625 -0.525 -0.425 -0.325 -0.225 -0.125 -0.025 0.075 0.175\n",
+ " 0.275 0.375 0.475 0.575 0.675 0.775]\n",
+ "samples_int[0 1 2 3 4 5 6]\n",
+ "h_freq[ 0.45411359 -0.0212347 -0.65442628 -0.84234293 -0.13316324 1.38324124\n",
+ " 3.03675078 3.95846335 3.63540672 2.24911074 0.55514326 -0.60966541\n",
+ " -0.84150972 -0.35358545 0.26669278 0.51334131]\n",
+ "h_ideal[ 3.10262780e-02 2.99830750e-02 2.88692595e-02 2.76870500e-02\n",
+ " 2.64388245e-02 2.51271158e-02 2.37546068e-02 2.23241246e-02\n",
+ " 2.08386353e-02 1.93012375e-02 1.77151562e-02 1.60837364e-02\n",
+ " 1.44104353e-02 1.26988161e-02 1.09525398e-02 9.17535764e-03\n",
+ " 7.37110346e-03 5.54368515e-03 3.69707648e-03 1.83530854e-03\n",
+ " -3.75389411e-05 -1.91734645e-03 -3.79996360e-03 -5.68121819e-03\n",
+ " -7.55692534e-03 -9.42289669e-03 -1.12749496e-02 -1.31089164e-02\n",
+ " -1.49206538e-02 -1.67060518e-02 -1.84610433e-02 -2.01816127e-02\n",
+ " -2.18638056e-02 -2.35037373e-02 -2.50976019e-02 -2.66416805e-02\n",
+ " -2.81323506e-02 -2.95660937e-02 -3.09395037e-02 -3.22492951e-02\n",
+ " -3.34923102e-02 -3.46655271e-02 -3.57660666e-02 -3.67911991e-02\n",
+ " -3.77383512e-02 -3.86051122e-02 -3.93892397e-02 -4.00886655e-02\n",
+ " -4.07015008e-02 -4.12260407e-02 -4.16607694e-02 -4.20043635e-02\n",
+ " -4.22556964e-02 -4.24138408e-02 -4.24780722e-02 -4.24478711e-02\n",
+ " -4.23229246e-02 -4.21031285e-02 -4.17885880e-02 -4.13796183e-02\n",
+ " -4.08767448e-02 -4.02807029e-02 -3.95924372e-02 -3.88131000e-02\n",
+ " -3.79440498e-02 -3.69868493e-02 -3.59432624e-02 -3.48152516e-02\n",
+ " -3.36049739e-02 -3.23147774e-02 -3.09471966e-02 -2.95049475e-02\n",
+ " -2.79909227e-02 -2.64081855e-02 -2.47599639e-02 -2.30496441e-02\n",
+ " -2.12807638e-02 -1.94570050e-02 -1.75821866e-02 -1.56602563e-02\n",
+ " -1.36952827e-02 -1.16914466e-02 -9.65303250e-03 -7.58441946e-03\n",
+ " -5.49007187e-03 -3.37453002e-03 -1.24240037e-03 9.01654268e-04\n",
+ " 3.05292479e-03 5.20666595e-03 7.35810667e-03 9.50246043e-03\n",
+ " 1.16349357e-02 1.37507466e-02 1.58451231e-02 1.79133223e-02\n",
+ " 1.99506380e-02 2.19524121e-02 2.39140447e-02 2.58310043e-02\n",
+ " 2.76988383e-02 2.95131833e-02 3.12697744e-02 3.29644561e-02\n",
+ " 3.45931908e-02 3.61520691e-02 3.76373182e-02 3.90453114e-02\n",
+ " 4.03725766e-02 4.16158043e-02 4.27718560e-02 4.38377715e-02\n",
+ " 4.48107764e-02 4.56882893e-02 4.64679278e-02 4.71475148e-02\n",
+ " 4.77250846e-02 4.81988877e-02 4.85673958e-02 4.88293061e-02\n",
+ " 4.89835454e-02 4.90292733e-02 4.89658850e-02 4.87930140e-02\n",
+ " 4.85105339e-02 4.81185596e-02 4.76174484e-02 4.70078001e-02\n",
+ " 4.62904572e-02 4.54665036e-02 4.45372638e-02 4.35043009e-02\n",
+ " 4.23694144e-02 4.11346372e-02 3.98022324e-02 3.83746893e-02\n",
+ " 3.68547189e-02 3.52452494e-02 3.35494203e-02 3.17705767e-02\n",
+ " 2.99122632e-02 2.79782166e-02 2.59723589e-02 2.38987898e-02\n",
+ " 2.17617778e-02 1.95657526e-02 1.73152954e-02 1.50151300e-02\n",
+ " 1.26701130e-02 1.02852236e-02 7.86555385e-03 5.41629729e-03\n",
+ " 2.94273859e-03 4.50242226e-04 -2.05575891e-03 -4.56977505e-03\n",
+ " -7.08627130e-03 -9.59967955e-03 -1.21044105e-02 -1.45948660e-02\n",
+ " -1.70654508e-02 -1.95105853e-02 -2.19247178e-02 -2.43023365e-02\n",
+ " -2.66379819e-02 -2.89262594e-02 -3.11618507e-02 -3.33395267e-02\n",
+ " -3.54541587e-02 -3.75007304e-02 -3.94743496e-02 -4.13702594e-02\n",
+ " -4.31838493e-02 -4.49106660e-02 -4.65464241e-02 -4.80870163e-02\n",
+ " -4.95285232e-02 -5.08672230e-02 -5.20996007e-02 -5.32223566e-02\n",
+ " -5.42324150e-02 -5.51269319e-02 -5.59033024e-02 -5.65591677e-02\n",
+ " -5.70924219e-02 -5.75012172e-02 -5.77839701e-02 -5.79393658e-02\n",
+ " -5.79663626e-02 -5.78641958e-02 -5.76323807e-02 -5.72707150e-02\n",
+ " -5.67792814e-02 -5.61584481e-02 -5.54088703e-02 -5.45314899e-02\n",
+ " -5.35275352e-02 -5.23985195e-02 -5.11462399e-02 -4.97727743e-02\n",
+ " -4.82804791e-02 -4.66719848e-02 -4.49501926e-02 -4.31182690e-02\n",
+ " -4.11796405e-02 -3.91379878e-02 -3.69972390e-02 -3.47615623e-02\n",
+ " -3.24353588e-02 -3.00232534e-02 -2.75300867e-02 -2.49609055e-02\n",
+ " -2.23209526e-02 -1.96156571e-02 -1.68506230e-02 -1.40316187e-02\n",
+ " -1.11645646e-02 -8.25552183e-03 -5.31067933e-03 -2.33634137e-03\n",
+ " 6.61085556e-04 3.67510610e-03 6.69914965e-03 9.72658419e-03\n",
+ " 1.27507304e-02 1.57648758e-02 1.87622895e-02 2.17362360e-02\n",
+ " 2.46799907e-02 2.75868541e-02 3.04501664e-02 3.32633224e-02\n",
+ " 3.60197865e-02 3.87131066e-02 4.13369293e-02 4.38850140e-02\n",
+ " 4.63512470e-02 4.87296560e-02 5.10144235e-02 5.31999005e-02\n",
+ " 5.52806201e-02 5.72513099e-02 5.91069054e-02 6.08425615e-02\n",
+ " 6.24536651e-02 6.39358460e-02 6.52849882e-02 6.64972404e-02\n",
+ " 6.75690260e-02 6.84970525e-02 6.92783207e-02 6.99101326e-02\n",
+ " 7.03900998e-02 7.07161501e-02 7.08865344e-02 7.08998325e-02\n",
+ " 7.07549582e-02 7.04511638e-02 6.99880440e-02 6.93655393e-02\n",
+ " 6.85839378e-02 6.76438776e-02 6.65463469e-02 6.52926850e-02\n",
+ " 6.38845812e-02 6.23240737e-02 6.06135477e-02 5.87557322e-02\n",
+ " 5.67536966e-02 5.46108466e-02 5.23309188e-02 4.99179751e-02\n",
+ " 4.73763961e-02 4.47108739e-02 4.19264040e-02 3.90282768e-02\n",
+ " 3.60220681e-02 3.29136291e-02 2.97090759e-02 2.64147779e-02\n",
+ " 2.30373461e-02 1.95836204e-02 1.60606568e-02 1.24757134e-02\n",
+ " 8.83623633e-03 5.14984533e-03 1.42431836e-03 -2.33242388e-03\n",
+ " -6.11233392e-03 -9.90725388e-03 -1.37089322e-02 -1.75090406e-02\n",
+ " -2.12991916e-02 -2.50709556e-02 -2.88158792e-02 -3.25255026e-02\n",
+ " -3.61913783e-02 -3.98050887e-02 -4.33582646e-02 -4.68426034e-02\n",
+ " -5.02498876e-02 -5.35720026e-02 -5.68009551e-02 -5.99288913e-02\n",
+ " -6.29481141e-02 -6.58511015e-02 -6.86305235e-02 -7.12792593e-02\n",
+ " -7.37904144e-02 -7.61573366e-02 -7.83736325e-02 -8.04331828e-02\n",
+ " -8.23301579e-02 -8.40590322e-02 -8.56145984e-02 -8.69919811e-02\n",
+ " -8.81866500e-02 -8.91944321e-02 -9.00115233e-02 -9.06345000e-02\n",
+ " -9.10603287e-02 -9.12863762e-02 -9.13104182e-02 -9.11306474e-02\n",
+ " -9.07456810e-02 -9.01545664e-02 -8.93567878e-02 -8.83522701e-02\n",
+ " -8.71413833e-02 -8.57249448e-02 -8.41042223e-02 -8.22809343e-02\n",
+ " -8.02572502e-02 -7.80357901e-02 -7.56196229e-02 -7.30122635e-02\n",
+ " -7.02176692e-02 -6.72402358e-02 -6.40847914e-02 -6.07565904e-02\n",
+ " -5.72613061e-02 -5.36050227e-02 -4.97942257e-02 -4.58357923e-02\n",
+ " -4.17369800e-02 -3.75054154e-02 -3.31490810e-02 -2.86763017e-02\n",
+ " -2.40957312e-02 -1.94163358e-02 -1.46473796e-02 -9.79840698e-03\n",
+ " -4.87922599e-03 1.00110106e-04 5.12932134e-03 1.01979203e-02\n",
+ " 1.52952321e-02 2.04104147e-02 2.55324798e-02 3.06503146e-02\n",
+ " 3.57527030e-02 4.08283487e-02 4.58658970e-02 5.08539582e-02\n",
+ " 5.57811308e-02 6.06360245e-02 6.54072845e-02 7.00836144e-02\n",
+ " 7.46538010e-02 7.91067371e-02 8.34314465e-02 8.76171070e-02\n",
+ " 9.16530745e-02 9.55289065e-02 9.92343857e-02 1.02759543e-01\n",
+ " 1.06094680e-01 1.09230392e-01 1.12157592e-01 1.14867527e-01\n",
+ " 1.17351807e-01 1.19602419e-01 1.21611751e-01 1.23372609e-01\n",
+ " 1.24878241e-01 1.26122348e-01 1.27099109e-01 1.27803190e-01\n",
+ " 1.28229769e-01 1.28374542e-01 1.28233745e-01 1.27804164e-01\n",
+ " 1.27083144e-01 1.26068609e-01 1.24759063e-01 1.23153608e-01\n",
+ " 1.21251946e-01 1.19054389e-01 1.16561864e-01 1.13775922e-01\n",
+ " 1.10698736e-01 1.07333109e-01 1.03682471e-01 9.97508850e-02\n",
+ " 9.55430408e-02 9.10642566e-02 8.63204746e-02 8.13182571e-02\n",
+ " 7.60647807e-02 7.05678297e-02 6.48357883e-02 5.88776313e-02\n",
+ " 5.27029141e-02 4.63217610e-02 3.97448529e-02 3.29834130e-02\n",
+ " 2.60491927e-02 1.89544549e-02 1.17119577e-02 4.33493531e-03\n",
+ " -3.16292005e-03 -1.07674790e-02 -1.84641959e-02 -2.62381307e-02\n",
+ " -3.40739725e-02 -4.19560626e-02 -4.98684197e-02 -5.77947654e-02\n",
+ " -6.57185500e-02 -7.36229797e-02 -8.14910442e-02 -8.93055449e-02\n",
+ " -9.70491235e-02 -1.04704291e-01 -1.12253460e-01 -1.19678969e-01\n",
+ " -1.26963119e-01 -1.34088203e-01 -1.41036535e-01 -1.47790482e-01\n",
+ " -1.54332496e-01 -1.60645148e-01 -1.66711154e-01 -1.72513412e-01\n",
+ " -1.78035031e-01 -1.83259362e-01 -1.88170031e-01 -1.92750967e-01\n",
+ " -1.96986439e-01 -2.00861076e-01 -2.04359907e-01 -2.07468386e-01\n",
+ " -2.10172419e-01 -2.12458396e-01 -2.14313217e-01 -2.15724319e-01\n",
+ " -2.16679702e-01 -2.17167955e-01 -2.17178280e-01 -2.16700518e-01\n",
+ " -2.15725169e-01 -2.14243413e-01 -2.12247135e-01 -2.09728942e-01\n",
+ " -2.06682181e-01 -2.03100959e-01 -1.98980157e-01 -1.94315445e-01\n",
+ " -1.89103299e-01 -1.83341009e-01 -1.77026695e-01 -1.70159312e-01\n",
+ " -1.62738663e-01 -1.54765405e-01 -1.46241051e-01 -1.37167982e-01\n",
+ " -1.27549441e-01 -1.17389543e-01 -1.06693268e-01 -9.54664662e-02\n",
+ " -8.37158486e-02 -7.14489876e-02 -5.86743091e-02 -4.54010860e-02\n",
+ " -3.16394290e-02 -1.74002770e-02 -2.69538540e-03 1.24626868e-02\n",
+ " 2.80605915e-02 4.40842070e-02 6.05186552e-02 7.73483197e-02\n",
+ " 9.45568662e-02 1.12127263e-01 1.30041802e-01 1.48282126e-01\n",
+ " 1.66829248e-01 1.85663582e-01 2.04764966e-01 2.24112693e-01\n",
+ " 2.43685536e-01 2.63461784e-01 2.83419266e-01 3.03535387e-01\n",
+ " 3.23787160e-01 3.44151238e-01 3.64603949e-01 3.85121331e-01\n",
+ " 4.05679165e-01 4.26253014e-01 4.46818258e-01 4.67350128e-01\n",
+ " 4.87823748e-01 5.08214170e-01 5.28496409e-01 5.48645486e-01\n",
+ " 5.68636461e-01 5.88444475e-01 6.08044786e-01 6.27412805e-01\n",
+ " 6.46524137e-01 6.65354618e-01 6.83880349e-01 7.02077739e-01\n",
+ " 7.19923533e-01 7.37394857e-01 7.54469248e-01 7.71124690e-01\n",
+ " 7.87339648e-01 8.03093104e-01 8.18364586e-01 8.33134205e-01\n",
+ " 8.47382681e-01 8.61091376e-01 8.74242323e-01 8.86818254e-01\n",
+ " 8.98802629e-01 9.10179658e-01 9.20934330e-01 9.31052433e-01\n",
+ " 9.40520581e-01 9.49326231e-01 9.57457704e-01 9.64904206e-01\n",
+ " 9.71655841e-01 9.77703629e-01 9.83039523e-01 9.87656414e-01\n",
+ " 9.91548150e-01 9.94709543e-01 9.97136375e-01 9.98825408e-01\n",
+ " 9.99774389e-01 9.99982051e-01 9.99448116e-01 9.98173297e-01\n",
+ " 9.96159296e-01 9.93408801e-01 9.89925480e-01 9.85713979e-01\n",
+ " 9.80779912e-01 9.75129853e-01 9.68771325e-01 9.61712788e-01\n",
+ " 9.53963626e-01 9.45534133e-01 9.36435494e-01 9.26679770e-01\n",
+ " 9.16279878e-01 9.05249571e-01 8.93603413e-01 8.81356763e-01\n",
+ " 8.68525743e-01 8.55127218e-01 8.41178765e-01 8.26698652e-01\n",
+ " 8.11705801e-01 7.96219765e-01 7.80260693e-01 7.63849301e-01\n",
+ " 7.47006840e-01 7.29755058e-01 7.12116175e-01 6.94112837e-01\n",
+ " 6.75768091e-01 6.57105345e-01 6.38148328e-01 6.18921063e-01\n",
+ " 5.99447818e-01 5.79753078e-01 5.59861505e-01 5.39797897e-01\n",
+ " 5.19587153e-01 4.99254235e-01 4.78824129e-01 4.58321808e-01\n",
+ " 4.37772194e-01 4.17200121e-01 3.96630295e-01 3.76087261e-01\n",
+ " 3.55595365e-01 3.35178717e-01 3.14861155e-01 2.94666213e-01\n",
+ " 2.74617084e-01 2.54736586e-01 2.35047131e-01 2.15570692e-01\n",
+ " 1.96328771e-01 1.77342369e-01 1.58631958e-01 1.40217449e-01\n",
+ " 1.22118168e-01 1.04352827e-01 8.69395028e-02 6.98956068e-02\n",
+ " 5.32378671e-02 3.69823046e-02 2.11442132e-02 5.73814030e-03\n",
+ " -9.22213061e-03 -2.37235968e-02 -3.77540513e-02 -5.13020963e-02\n",
+ " -6.43571561e-02 -7.69094874e-02 -8.89501891e-02 -1.00471210e-01\n",
+ " -1.11465356e-01 -1.21926294e-01 -1.31848557e-01 -1.41227546e-01\n",
+ " -1.50059529e-01 -1.58341643e-01 -1.66071889e-01 -1.73249131e-01\n",
+ " -1.79873089e-01 -1.85944334e-01 -1.91464280e-01 -1.96435173e-01\n",
+ " -2.00860082e-01 -2.04742889e-01 -2.08088271e-01 -2.10901690e-01\n",
+ " -2.13189377e-01 -2.14958311e-01 -2.16216206e-01 -2.16971490e-01\n",
+ " -2.17233284e-01 -2.17011380e-01 -2.16316223e-01 -2.15158883e-01\n",
+ " -2.13551032e-01 -2.11504922e-01 -2.09033356e-01 -2.06149661e-01\n",
+ " -2.02867663e-01 -1.99201659e-01 -1.95166386e-01 -1.90776994e-01\n",
+ " -1.86049017e-01 -1.80998338e-01 -1.75641166e-01 -1.69994000e-01\n",
+ " -1.64073598e-01 -1.57896950e-01 -1.51481240e-01 -1.44843820e-01\n",
+ " -1.38002176e-01 -1.30973897e-01 -1.23776643e-01 -1.16428113e-01\n",
+ " -1.08946015e-01 -1.01348035e-01 -9.36518043e-02 -8.58748724e-02\n",
+ " -7.80346738e-02 -7.01485002e-02 -6.22334708e-02 -5.43065042e-02\n",
+ " -4.63842900e-02 -3.84832618e-02 -3.06195706e-02 -2.28090587e-02\n",
+ " -1.50672349e-02 -7.40924970e-03 1.50127586e-04 7.59653178e-03\n",
+ " 1.49160234e-02 2.20951092e-02 2.91207622e-02 3.59804400e-02\n",
+ " 4.26621028e-02 4.91542297e-02 5.54458342e-02 6.15264789e-02\n",
+ " 6.73862882e-02 7.30159608e-02 7.84067807e-02 8.35506264e-02\n",
+ " 8.84399802e-02 9.30679351e-02 9.74282010e-02 1.01515110e-01\n",
+ " 1.05323619e-01 1.08849316e-01 1.12088414e-01 1.15037761e-01\n",
+ " 1.17694830e-01 1.20057723e-01 1.22125164e-01 1.23896498e-01\n",
+ " 1.25371680e-01 1.26551275e-01 1.27436444e-01 1.28028941e-01\n",
+ " 1.28331097e-01 1.28345814e-01 1.28076550e-01 1.27527309e-01\n",
+ " 1.26702624e-01 1.25607545e-01 1.24247621e-01 1.22628887e-01\n",
+ " 1.20757841e-01 1.18641435e-01 1.16287047e-01 1.13702469e-01\n",
+ " 1.10895881e-01 1.07875838e-01 1.04651239e-01 1.01231317e-01\n",
+ " 9.76256070e-02 9.38439292e-02 8.98963649e-02 8.57932335e-02\n",
+ " 8.15450691e-02 7.71625969e-02 7.26567100e-02 6.80384452e-02\n",
+ " 6.33189591e-02 5.85095046e-02 5.36214066e-02 4.86660385e-02\n",
+ " 4.36547985e-02 3.85990857e-02 3.35102772e-02 2.83997049e-02\n",
+ " 2.32786325e-02 1.81582335e-02 1.30495685e-02 7.96356398e-03\n",
+ " 2.91099109e-03 -2.09755531e-03 -7.05167669e-03 -1.19411905e-02\n",
+ " -1.67561490e-02 -2.14868582e-02 -2.61238947e-02 -3.06581236e-02\n",
+ " -3.50807142e-02 -3.93831556e-02 -4.35572719e-02 -4.75952355e-02\n",
+ " -5.14895808e-02 -5.52332162e-02 -5.88194355e-02 -6.22419285e-02\n",
+ " -6.54947910e-02 -6.85725329e-02 -7.14700865e-02 -7.41828131e-02\n",
+ " -7.67065095e-02 -7.90374123e-02 -8.11722025e-02 -8.31080085e-02\n",
+ " -8.48424084e-02 -8.63734309e-02 -8.76995561e-02 -8.88197148e-02\n",
+ " -8.97332864e-02 -9.04400974e-02 -9.09404173e-02 -9.12349548e-02\n",
+ " -9.13248523e-02 -9.12116803e-02 -9.08974307e-02 -9.03845086e-02\n",
+ " -8.96757245e-02 -8.87742848e-02 -8.76837817e-02 -8.64081832e-02\n",
+ " -8.49518209e-02 -8.33193786e-02 -8.15158793e-02 -7.95466720e-02\n",
+ " -7.74174180e-02 -7.51340760e-02 -7.27028880e-02 -7.01303632e-02\n",
+ " -6.74232623e-02 -6.45885815e-02 -6.16335357e-02 -5.85655415e-02\n",
+ " -5.53922002e-02 -5.21212799e-02 -4.87606982e-02 -4.53185037e-02\n",
+ " -4.18028587e-02 -3.82220204e-02 -3.45843229e-02 -3.08981590e-02\n",
+ " -2.71719616e-02 -2.34141859e-02 -1.96332912e-02 -1.58377225e-02\n",
+ " -1.20358931e-02 -8.23616654e-03 -4.44683950e-03 -6.76124398e-04\n",
+ " 3.06786745e-03 6.77714235e-03 1.04438404e-02 1.40602515e-02\n",
+ " 1.76188304e-02 2.11122119e-02 2.45332251e-02 2.78749075e-02\n",
+ " 3.11305182e-02 3.42935512e-02 3.73577469e-02 4.03171046e-02\n",
+ " 4.31658929e-02 4.58986604e-02 4.85102453e-02 5.09957845e-02\n",
+ " 5.33507222e-02 5.55708171e-02 5.76521497e-02 5.95911283e-02\n",
+ " 6.13844945e-02 6.30293283e-02 6.45230515e-02 6.58634314e-02\n",
+ " 6.70485830e-02 6.80769710e-02 6.89474104e-02 6.96590672e-02\n",
+ " 7.02114574e-02 7.06044462e-02 7.08382455e-02 7.09134118e-02\n",
+ " 7.08308420e-02 7.05917701e-02 7.01977616e-02 6.96507086e-02\n",
+ " 6.89528232e-02 6.81066310e-02 6.71149634e-02 6.59809499e-02\n",
+ " 6.47080089e-02 6.32998393e-02 6.17604101e-02 6.00939503e-02\n",
+ " 5.83049386e-02 5.63980914e-02 5.43783520e-02 5.22508778e-02\n",
+ " 5.00210284e-02 4.76943524e-02 4.52765747e-02 4.27735824e-02\n",
+ " 4.01914120e-02 3.75362345e-02 3.48143422e-02 3.20321335e-02\n",
+ " 2.91960990e-02 2.63128070e-02 2.33888883e-02 2.04310219e-02\n",
+ " 1.74459204e-02 1.44403149e-02 1.14209406e-02 8.39452220e-03\n",
+ " 5.36775927e-03 2.34731209e-03 -6.60212626e-04 -3.64827569e-03\n",
+ " -6.61041919e-03 -9.54027998e-03 -1.24316029e-02 -1.52782538e-02\n",
+ " -1.80742319e-02 -2.08136822e-02 -2.34909073e-02 -2.61003788e-02\n",
+ " -2.86367481e-02 -3.10948576e-02 -3.34697500e-02 -3.57566785e-02\n",
+ " -3.79511155e-02 -4.00487615e-02 -4.20455530e-02 -4.39376700e-02\n",
+ " -4.57215427e-02 -4.73938583e-02 -4.89515666e-02 -5.03918847e-02\n",
+ " -5.17123024e-02 -5.29105853e-02 -5.39847788e-02 -5.49332105e-02\n",
+ " -5.57544922e-02 -5.64475214e-02 -5.70114826e-02 -5.74458468e-02\n",
+ " -5.77503715e-02 -5.79250997e-02 -5.79703582e-02 -5.78867552e-02\n",
+ " -5.76751777e-02 -5.73367882e-02 -5.68730201e-02 -5.62855740e-02\n",
+ " -5.55764119e-02 -5.47477517e-02 -5.38020613e-02 -5.27420517e-02\n",
+ " -5.15706699e-02 -5.02910910e-02 -4.89067105e-02 -4.74211357e-02\n",
+ " -4.58381763e-02 -4.41618356e-02 -4.23963006e-02 -4.05459318e-02\n",
+ " -3.86152529e-02 -3.66089403e-02 -3.45318117e-02 -3.23888155e-02\n",
+ " -3.01850186e-02 -2.79255956e-02 -2.56158163e-02 -2.32610339e-02\n",
+ " -2.08666732e-02 -1.84382181e-02 -1.59811995e-02 -1.35011830e-02\n",
+ " -1.10037565e-02 -8.49451808e-03 -5.97906349e-03 -3.46297419e-03\n",
+ " -9.51805147e-04 1.54892714e-03 4.03375648e-03 6.49727867e-03\n",
+ " 8.93416300e-03 1.13391635e-02 1.37071299e-02 1.60330187e-02\n",
+ " 1.83119032e-02 2.05389840e-02 2.27095991e-02 2.48192326e-02\n",
+ " 2.68635248e-02 2.88382803e-02 3.07394768e-02 3.25632727e-02\n",
+ " 3.43060149e-02 3.59642460e-02 3.75347103e-02 3.90143607e-02\n",
+ " 4.04003640e-02 4.16901060e-02 4.28811966e-02 4.39714734e-02\n",
+ " 4.49590059e-02 4.58420983e-02 4.66192922e-02 4.72893687e-02\n",
+ " 4.78513501e-02 4.83045006e-02 4.86483272e-02 4.88825791e-02\n",
+ " 4.90072479e-02 4.90225658e-02 4.89290044e-02 4.87272725e-02\n",
+ " 4.84183133e-02 4.80033015e-02 4.74836396e-02 4.68609537e-02\n",
+ " 4.61370892e-02 4.53141056e-02 4.43942707e-02 4.33800555e-02\n",
+ " 4.22741272e-02 4.10793427e-02 3.97987415e-02 3.84355384e-02]\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<Figure size 432x288 with 1 Axes>"
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/plain": [
+ "<StemContainer object of 3 artists>"
+ ]
+ },
+ "execution_count": 19,
+ "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": [
+ "samp_rate = 10\n",
+ "period = 1 / samp_rate\n",
+ "print(f\"System frequencies fs={samp_rate}, T={period}\")\n",
+ "\n",
+ "delay_freq = 7.25 * period\n",
+ "delay_int = int(np.floor(delay_freq/period))\n",
+ "ampl = 4\n",
+ "print(f\"Tap with amplitude={ampl}, delay_freq={delay_freq}, delay_int={delay_int}\")\n",
+ "\n",
+ "order = 2 * np.floor(delay / period) + 1 #N\n",
+ "print(f\"Creating filter of order N={order}\")\n",
+ "\n",
+ "skip = np.floor(delay / period) - (order - 1) / 2 #M\n",
+ "assert skip >= 0\n",
+ "\n",
+ "samples_freq = np.arange(0, order + 1) * period - delay_freq\n",
+ "print(f\"samples_freq{samples_freq}\")\n",
+ "\n",
+ "samples_int = np.arange(0,delay_int,1)\n",
+ "print(f\"samples_int{samples_int}\")\n",
+ "\n",
+ "h_freq = ampl*(np.sin(samp_rate * samples_freq) / (samp_rate * samples_freq)) #sinc\n",
+ "\n",
+ "#h_ideal = np.exp(-1j*delay_int*2*np.pi*samp_rate)\n",
+ "print(f\"h_freq{h_freq}\")\n",
+ "print(f\"h_ideal{h_ideal}\")\n",
+ "\n",
+ "t_freq = np.linspace(0, delay_freq + period, samp_rate)\n",
+ "t_int = np.linspace(0, delay_int + period, samp_rate)\n",
+ "\n",
+ "f_freq = np.sin(2 * np.pi * samp_rate * t_freq)#test Signal\n",
+ "f_int = np.sin(2 * np.pi * samp_rate * t_int)#test Signal\n",
+ "\n",
+ "f_shift_freq = np.convolve(h_freq , f_freq)[:len(f_freq)]#Faltung freq \n",
+ "f_shift_int = np.convolve(h_int , f_int)[:len(f_int)]#Faltung int \n",
+ "\n",
+ "\n",
+ "\n",
+ "#h_int = np.concatenate([np.zeros(delay_int-1), [ampl], np.zeros(3)])\n",
+ "#y1 = np.convolve(test.real, h_int)\n",
+ "plt.grid(True)\n",
+ "plt.stem(t_freq, f_shift_freq, linefmt=\"C0-\")\n",
+ "plt.stem(t_int, f_shift_int, linefmt='C1-')\n",
+ "plt.show()\n",
+ "plt.grid(True)\n",
+ "plt.stem(f_shift_freq, linefmt=\"C2-\", label='freq')\n",
+ "plt.stem(f_shift_int, linefmt='C3-', label = 'int')\n",
+ "#plt.legend(loc=\"upper left\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "e5f23991",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
"cell_type": "code",
"execution_count": null,
- "id": "68a63dbd",
+ "id": "f224987a",
"metadata": {},
"outputs": [],
"source": []
diff --git a/simulation/QAM_Fading/epy_block_0.py b/simulation/QAM_Fading/epy_block_0.py
index 8fbab3d..48fe6e9 100644
--- a/simulation/QAM_Fading/epy_block_0.py
+++ b/simulation/QAM_Fading/epy_block_0.py
@@ -53,12 +53,12 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
x = np.concatenate([np.zeros(d-1), [a], np.zeros(max_len-d)])
sum_x += x
- #sum_x[0] = self.los
+ sum_x[0] = self.los
print(sum_x)
- H_int = fft(sum_x)
+ #H_int = fft(sum_x)
- h = ifft(H_int)
+ #h = ifft(H_int)
#h[0]=1
diff --git a/simulation/QAM_Fading/qam_fading_V2_eigerner_block.grc b/simulation/QAM_Fading/qam_fading_V2_eigerner_block.grc
index 99e01b1..f14bda0 100644
--- a/simulation/QAM_Fading/qam_fading_V2_eigerner_block.grc
+++ b/simulation/QAM_Fading/qam_fading_V2_eigerner_block.grc
@@ -74,48 +74,6 @@ blocks:
coordinate: [1056, 580.0]
rotation: 0
state: true
-- name: amp_2
- id: variable_qtgui_range
- parameters:
- comment: ''
- gui_hint: 'params@2: 2,1,1,1'
- label: Ampliude 2
- min_len: '200'
- orient: Qt.Horizontal
- rangeType: float
- start: '0'
- step: '0.1'
- stop: '5'
- value: '0'
- widget: counter_slider
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [1064, 716.0]
- rotation: 0
- state: true
-- name: amp_3
- id: variable_qtgui_range
- parameters:
- comment: ''
- gui_hint: 'params@2: 3,1,1,1'
- label: Ampliude 3
- min_len: '200'
- orient: Qt.Horizontal
- rangeType: float
- start: '0'
- step: '0.1'
- stop: '5'
- value: '0'
- widget: counter_slider
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [1064, 852.0]
- rotation: 0
- state: true
- name: chn_taps
id: variable
parameters:
@@ -224,48 +182,6 @@ blocks:
coordinate: [944, 580.0]
rotation: 0
state: true
-- name: fading_2
- id: variable_qtgui_range
- parameters:
- comment: ''
- gui_hint: 'params@2: 2,0,1,1'
- label: Fading 2
- min_len: '200'
- orient: Qt.Horizontal
- rangeType: int
- start: '0'
- step: '1'
- stop: '30'
- value: '0'
- widget: counter_slider
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [944, 716.0]
- rotation: 0
- state: true
-- name: fading_3
- id: variable_qtgui_range
- parameters:
- comment: ''
- gui_hint: 'params@2: 3,0,1,1'
- label: Fading 3
- min_len: '200'
- orient: Qt.Horizontal
- rangeType: int
- start: '0'
- step: '1'
- stop: '30'
- value: '0'
- widget: counter_slider
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [944, 852.0]
- rotation: 0
- state: true
- name: freq_offset
id: variable_qtgui_range
parameters:
@@ -881,16 +797,16 @@ blocks:
\ in zip(self.amplitudes,self.delays):\n # if d-1 <= 0:\n \
\ # x = np.concatenate([[a], np.zeros(max_len-1)])\n # else:\
\ \n x = np.concatenate([np.zeros(d-1), [a], np.zeros(max_len-d)])\n\
- \ sum_x += x\n \n #sum_x[0] = self.los\n print(sum_x)\n\
- \ \n H_int = fft(sum_x)\n\n h = ifft(H_int)\n\n \
- \ #h[0]=1\n\n y = np.convolve(inp, sum_x)\n \n y+=np.concatenate([self.temp,np.zeros(len(y)-len(self.temp))])\n\
+ \ sum_x += x\n \n sum_x[0] = self.los\n print(sum_x)\n\
+ \ \n #H_int = fft(sum_x)\n\n #h = ifft(H_int)\n\n \
+ \ #h[0]=1\n\n y = np.convolve(inp, sum_x)\n \n y+=np.concatenate([self.temp,np.zeros(len(y)-len(self.temp))])\n\
\ \n\n oup[:] = y[:len(inp)]\n self.temp = y[len(inp):]\
\ \n \n\n return len(oup)"
affinity: ''
alias: ''
- amplitudes: '[0.2,0.2,0.2,0.2,0.2]'
+ amplitudes: '[0.2,0.2]'
comment: ''
- delays: '[sps+1,sps+1,sps+1,sps+1,sps+1]'
+ delays: '[sps+1,sps+1]'
los: 'True'
maxoutbuf: '0'
minoutbuf: '0'
@@ -901,7 +817,7 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [960, 308.0]
+ coordinate: [968, 324.0]
rotation: 0
state: true
- name: epy_block_1
@@ -949,7 +865,7 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [600, 20.0]
+ coordinate: [592, 12.0]
rotation: 0
state: true
- name: params
diff --git a/simulation/QAM_Fading/qam_fading_block.py b/simulation/QAM_Fading/qam_fading_block.py
index 8f095b5..b16ac7a 100755
--- a/simulation/QAM_Fading/qam_fading_block.py
+++ b/simulation/QAM_Fading/qam_fading_block.py
@@ -87,16 +87,12 @@ class qam_fading_block(gr.top_block, Qt.QWidget):
self.phase_bw = phase_bw = 2 * 3.141592653589793 / 100
self.noise_volt = noise_volt = 0.0001
self.freq_offset = freq_offset = 0
- self.fading_3 = fading_3 = 0
- self.fading_2 = fading_2 = 0
self.fading_1 = fading_1 = 2
self.eq_ntaps = eq_ntaps = 15
self.eq_mod = eq_mod = 1
self.eq_gain = eq_gain = .01
self.const = const = digital.constellation_16qam().base()
self.chn_taps = chn_taps = [1.0 + 0.0j, ]
- self.amp_3 = amp_3 = 0
- self.amp_2 = amp_2 = 0
self.amp_1 = amp_1 = 0.2
self.LOS_NLOS = LOS_NLOS = 1
@@ -495,20 +491,6 @@ 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._fading_3_range = Range(0, 30, 1, 0, 200)
- self._fading_3_win = RangeWidget(self._fading_3_range, self.set_fading_3, 'Fading 3', "counter_slider", int)
- self.params_grid_layout_2.addWidget(self._fading_3_win, 3, 0, 1, 1)
- for r in range(3, 4):
- self.params_grid_layout_2.setRowStretch(r, 1)
- for c in range(0, 1):
- self.params_grid_layout_2.setColumnStretch(c, 1)
- self._fading_2_range = Range(0, 30, 1, 0, 200)
- self._fading_2_win = RangeWidget(self._fading_2_range, self.set_fading_2, 'Fading 2', "counter_slider", int)
- self.params_grid_layout_2.addWidget(self._fading_2_win, 2, 0, 1, 1)
- for r in range(2, 3):
- self.params_grid_layout_2.setRowStretch(r, 1)
- for c in range(0, 1):
- self.params_grid_layout_2.setColumnStretch(c, 1)
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)
@@ -516,7 +498,7 @@ class qam_fading_block(gr.top_block, Qt.QWidget):
self.params_grid_layout_2.setRowStretch(r, 1)
for c in range(0, 1):
self.params_grid_layout_2.setColumnStretch(c, 1)
- self.epy_block_0 = epy_block_0.blk(amplitudes=[0.2,0.2,0.2,0.2,0.2], delays=[sps+1,sps+1,sps+1,sps+1,sps+1], los=True)
+ self.epy_block_0 = epy_block_0.blk(amplitudes=[0.2,0.2], delays=[sps+1,sps+1], los=True)
self.digital_pfb_clock_sync_xxx_0_0 = digital.pfb_clock_sync_ccf(sps , timing_loop_bw, rrc_taps, nfilts, nfilts/2, 1.5, 1)
self.digital_pfb_clock_sync_xxx_0 = digital.pfb_clock_sync_ccf(sps, timing_loop_bw, rrc_taps, nfilts, nfilts/2, 1.5, 1)
self.digital_map_bb_0_0 = digital.map_bb([0, 1, 3, 2])
@@ -553,20 +535,6 @@ class qam_fading_block(gr.top_block, Qt.QWidget):
self.blocks_char_to_float_0_0 = blocks.char_to_float(1, 1)
self.blocks_char_to_float_0 = blocks.char_to_float(1, 1)
self.analog_random_source_x_0 = blocks.vector_source_b(list(map(int, numpy.random.randint(0, 256, 1000))), True)
- self._amp_3_range = Range(0, 5, 0.1, 0, 200)
- self._amp_3_win = RangeWidget(self._amp_3_range, self.set_amp_3, 'Ampliude 3', "counter_slider", float)
- self.params_grid_layout_2.addWidget(self._amp_3_win, 3, 1, 1, 1)
- for r in range(3, 4):
- self.params_grid_layout_2.setRowStretch(r, 1)
- for c in range(1, 2):
- self.params_grid_layout_2.setColumnStretch(c, 1)
- self._amp_2_range = Range(0, 5, 0.1, 0, 200)
- self._amp_2_win = RangeWidget(self._amp_2_range, self.set_amp_2, 'Ampliude 2', "counter_slider", float)
- self.params_grid_layout_2.addWidget(self._amp_2_win, 2, 1, 1, 1)
- for r in range(2, 3):
- self.params_grid_layout_2.setRowStretch(r, 1)
- for c in range(1, 2):
- self.params_grid_layout_2.setColumnStretch(c, 1)
self._amp_1_range = Range(0, 5, 0.1, 0.2, 200)
self._amp_1_win = RangeWidget(self._amp_1_range, self.set_amp_1, 'Ampliude', "counter_slider", float)
self.params_grid_layout_2.addWidget(self._amp_1_win, 1, 1, 1, 1)
@@ -638,7 +606,7 @@ class qam_fading_block(gr.top_block, Qt.QWidget):
def set_sps(self, sps):
self.sps = sps
self.set_rrc_taps(firdes.root_raised_cosine(self.nfilts, self.nfilts, 1.0/float(self.sps), self.excess_bw, 45*self.nfilts))
- self.epy_block_0.delays = [self.sps+1,self.sps+1,self.sps+1,self.sps+1,self.sps+1]
+ self.epy_block_0.delays = [self.sps+1,self.sps+1]
def get_nfilts(self):
return self.nfilts
@@ -709,18 +677,6 @@ class qam_fading_block(gr.top_block, Qt.QWidget):
self.freq_offset = freq_offset
self.channels_channel_model_0.set_frequency_offset(self.freq_offset)
- def get_fading_3(self):
- return self.fading_3
-
- def set_fading_3(self, fading_3):
- self.fading_3 = fading_3
-
- def get_fading_2(self):
- return self.fading_2
-
- def set_fading_2(self, fading_2):
- self.fading_2 = fading_2
-
def get_fading_1(self):
return self.fading_1
@@ -762,18 +718,6 @@ class qam_fading_block(gr.top_block, Qt.QWidget):
self.chn_taps = chn_taps
self.channels_channel_model_0.set_taps(self.chn_taps)
- def get_amp_3(self):
- return self.amp_3
-
- def set_amp_3(self, amp_3):
- self.amp_3 = amp_3
-
- def get_amp_2(self):
- return self.amp_2
-
- def set_amp_2(self, amp_2):
- self.amp_2 = amp_2
-
def get_amp_1(self):
return self.amp_1