diff --git a/.gitignore b/.gitignore index 7a882d8..c21e5ed 100644 --- a/.gitignore +++ b/.gitignore @@ -221,4 +221,4 @@ build/ research/star_ris_comp_noma/resources/tex/* research/star_ris_comp_noma/results/* research/statistical_analysis/results/* -research/statistical_analysis/* \ No newline at end of file +# research/statistical_analysis/* \ No newline at end of file diff --git a/research/statistical_analysis/config.py b/research/statistical_analysis/config.py new file mode 100644 index 0000000..f213800 --- /dev/null +++ b/research/statistical_analysis/config.py @@ -0,0 +1,106 @@ +""" +Positions (x, y, z): +- BS1 is the center user for U1C, and BS2 is the center user for U2C +- Both base stations are at z = 25, and the RIS is at z = 10 +- The distances between the elements are around: + - BS1 to U1C and BS2 to U2C distance ≈ 25m + - BS1 to UF and BS2 to UF distance ≈ 65m + - BS1 to RIS and BS2 to RIS distance ≈ 55m + - RIS to UF distance ≈ 15m + - RIS to U1C and RIS to U2C distance ≈ 40m + - BS2 to U1C and BS1 to U2C distance ≈ 90m + +The 3D position components for each element of the system are generated as follows: +- BS1: [-50, 0, 25] +- BS2: [50, 0, 25] +- RIS: [0, 25, 5] +- Uf: [0, 35, 1] +- U1c: [-40, 18, 1] +- U2c: [30, 22, 1] + +Note that the distances can be within +- 5m of the given distance. + +Path Loss Exponents (alpha): +- BS1-U1c and BS2-U2c Links = 3 +- {BS1, BS2}-Uf Links = 3.5 +- {BS1, BS2}-RIS Links = 3 +- RIS-{U1c, U2c} Links = 2.7 +- RIS-Uf Link = 2.3 +- BS2-U1c and BS1-U2c Links = 4 + +Rician K Factors: +- K1 = 5 dB for RIS-UF Link +- K2 = 3 dB for RIS-{U1C, U2C} Links +""" + +environment = { + "positions": { + "BS1": [-50, 0, 25], # BS1 position + "BS2": [50, 0, 25], # BS2 position + "RIS": [0, 25, 5], # RIS position + "Uf": [0, 35, 1], # Uf position + "U1c": [-40, 18, 1], # U1c position + "U2c": [30, 22, 1], # U2c position + }, + "fading": { + "rayleigh": {"type": "rayleigh", "sigma": 1}, # Rayleigh fading + "ricianE": { + "type": "rician", + "K": 4, + "sigma": 1, + }, # Rician fading for edge users + "ricianC": { + "type": "rician", + "K": 3, + "sigma": 1, + }, # Rician fading for center users + "nakagami-id": { + "type": "nakagami", + "m": 1, + "omega": 1, + }, # Nakagami-m fading with m = 1 + "nakagami-d": { + "type": "nakagami", + "m": 2, + "omega": 3, + }, + }, # Nakagami-m fading with m = 2 + "pathloss": { + "center": {"type": "free-space", "alpha": 3, "p0": 25}, # Center users + "ris": {"type": "free-space", "alpha": 3, "p0": 25}, # BS to RIS + "risC": {"type": "free-space", "alpha": 2.7, "p0": 25}, # RIS to center users + "risE": {"type": "free-space", "alpha": 2.3, "p0": 25}, # RIS to edge user + "edge": {"type": "free-space", "alpha": 3.5, "p0": 25}, # Edge users + "inter": {"type": "free-space", "alpha": 3.5, "p0": 25}, # Interference links + }, +} + +setting = { + "ris34": { + "ris_enhanced": True, # RIS with 32 elements + "ris_elements": 34, + "comp_enabled": True, # CoMP enabled + }, + "no_ris": { + "ris_enhanced": False, # No RIS + "ris_elements": 34, + "comp_enabled": True, # CoMP enabled" + }, + "ris72": { + "ris_enhanced": True, # RIS with 70 elements + "ris_elements": 72, + "comp_enabled": True, # CoMP enabled + }, + "no_ris_non_comp": { + "ris_enhanced": False, # No RIS + "ris_elements": 34, + "comp_enabled": False, # CoMP disabled + }, +} + +constants = { + "BANDWIDTH": 1e6, # Bandwidth in Hz + "TEMP": 300, # Temperature in Kelvin + "FREQ": 2.4e9, # Frequency of carrier signal in Hz + "SIGMA": 4.96, # Shadowing standard deviation in dB +} diff --git a/research/statistical_analysis/derivations.ipynb b/research/statistical_analysis/derivations.ipynb new file mode 100644 index 0000000..9363f74 --- /dev/null +++ b/research/statistical_analysis/derivations.ipynb @@ -0,0 +1,1524 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Statistical Analysis STAR-RIS Assisted CoMP-NOMA" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import scipy as sp\n", + "import mpmath as mpm\n", + "from scipy.special import gamma\n", + "import sympy as sym\n", + "from sympy import meijerg\n", + "from sympy import N as NEval\n", + "import matplotlib.pyplot as plt\n", + "import simcomm.core.propagation as prop\n", + "from simcomm.core import Nakagami, get_rvs\n", + "from simcomm.utils import dbm2pow, db2pow, pow2db, pow2dbm, get_distance, qfunc\n", + "from simcomm.core.propagation import get_noise_power, get_pathloss" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "environment = {\n", + " \"positions\": {\n", + " \"BS1\": [-50, 0, 25], # BS1 position\n", + " \"BS2\": [50, 0, 25], # BS2 position\n", + " \"RIS\": [0, 25, 5], # RIS position\n", + " \"Uf\": [0, 35, 1], # Uf position\n", + " \"U1c\": [-40, 18, 1], # U1c position\n", + " \"U2c\": [30, 22, 1], # U2c position\n", + " },\n", + " \"fading\": {\n", + " \"rayleigh\": {\"type\": \"rayleigh\", \"sigma\": 1}, # Rayleigh fading\n", + " \"ricianE\": {\n", + " \"type\": \"rician\",\n", + " \"K\": 4,\n", + " \"sigma\": 1,\n", + " }, # Rician fading for edge users\n", + " \"ricianC\": {\n", + " \"type\": \"rician\",\n", + " \"K\": 3,\n", + " \"sigma\": 1,\n", + " }, # Rician fading for center users\n", + " \"nakagami-id\": {\n", + " \"type\": \"nakagami\",\n", + " \"m\": 1,\n", + " \"omega\": 2,\n", + " }, # Nakagami-m fading with m = 1\n", + " \"nakagami-d\": {\n", + " \"type\": \"nakagami\",\n", + " \"m\": 2,\n", + " \"omega\": 2,\n", + " },\n", + " }, # Nakagami-m fading with m = 2\n", + " \"pathloss\": {\n", + " \"center\": {\"type\": \"free-space\", \"alpha\": 3, \"p0\": 30}, # Center users\n", + " \"ris\": {\"type\": \"free-space\", \"alpha\": 3, \"p0\": 30}, # BS to RIS\n", + " \"risC\": {\"type\": \"free-space\", \"alpha\": 2.7, \"p0\": 30}, # RIS to center users\n", + " \"risE\": {\"type\": \"free-space\", \"alpha\": 2.3, \"p0\": 30}, # RIS to edge user\n", + " \"edge\": {\"type\": \"free-space\", \"alpha\": 3.5, \"p0\": 30}, # Edge users\n", + " \"inter\": {\"type\": \"free-space\", \"alpha\": 3.5, \"p0\": 30}, # Interference links\n", + " },\n", + "}\n", + "\n", + "setting = {\n", + " \"ris32\": {\n", + " \"ris_enhanced\": True, # RIS with 32 elements\n", + " \"ris_elements\": 32,\n", + " \"comp_enabled\": True, # CoMP enabled\n", + " },\n", + " \"no_ris\": {\n", + " \"ris_enhanced\": False, # No RIS\n", + " \"comp_enabled\": True, # CoMP enabled\"\n", + " },\n", + " \"ris70\": {\n", + " \"ris_enhanced\": True, # RIS with 70 elements\n", + " \"ris_elements\": 70,\n", + " \"comp_enabled\": True, # CoMP enabled\n", + " },\n", + " \"no_ris_non_comp\": {\n", + " \"ris_enhanced\": False, # No RIS\n", + " \"comp_enabled\": False, # CoMP disabled\n", + " },\n", + "}\n", + "\n", + "constants = {\n", + " \"BANDWIDTH\": 1e6, # Bandwidth in Hz\n", + " \"TEMP\": 300, # Temperature in Kelvin\n", + " \"FREQ\": 2.4e9, # Frequency of carrier signal in Hz\n", + " \"SIGMA\": 6.32, # Shadowing standard deviation in dB\n", + "}\n", + "\n", + "# Load the environment\n", + "pathloss_cfg = environment[\"pathloss\"]\n", + "fading_cfg = environment[\"fading\"]\n", + "positions = environment[\"positions\"]\n", + "\n", + "# Additional parameters\n", + "BANDWIDTH = constants[\"BANDWIDTH\"] # Bandwidth in Hz\n", + "TEMP = constants[\"TEMP\"] # Temperature in Kelvin\n", + "FREQ = constants[\"FREQ\"] # Frequency of carrier signal in Hz\n", + "SIGMA = constants[\"SIGMA\"] # Shadowing standard deviation in dB" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# Positions\n", + "pos_BS1 = positions[\"BS1\"]\n", + "pos_BS2 = positions[\"BS2\"]\n", + "pos_RIS = positions[\"RIS\"]\n", + "pos_U1c = positions[\"U1c\"]\n", + "pos_U2c = positions[\"U2c\"]\n", + "pos_Uf = positions[\"Uf\"]\n", + "\n", + "# Distance parameters\n", + "## BS1 specific distances\n", + "distance_iR = get_distance(pos_BS1, pos_RIS, 3)\n", + "distance_Rc = get_distance(pos_RIS, pos_U1c, 3)\n", + "distance_ic = get_distance(pos_BS1, pos_U1c, 3)\n", + "distance_if = get_distance(pos_BS1, pos_Uf, 3)\n", + "\n", + "## BS2 specific distances\n", + "distance_iR_hat = get_distance(pos_BS2, pos_RIS, 3)\n", + "distance_if_hat = get_distance(pos_BS2, pos_Uf, 3)\n", + "\n", + "## Common distances\n", + "distance_Rf = get_distance(pos_RIS, pos_Uf, 3)\n", + "distance_ic_prime = get_distance(pos_BS2, pos_U1c, 3)\n", + "\n", + "## BS specific distances for U2\n", + "distance_ic_u2 = get_distance(pos_BS2, pos_U2c, 3)\n", + "distance_Rc_u2 = get_distance(pos_RIS, pos_U2c, 3)\n", + "distance_ic_prime_u2 = get_distance(pos_BS1, pos_U2c, 3)\n", + "\n", + "\n", + "# #################### CUSTOM PARAMETERS ####################\n", + "# distance_Rf = 3\n", + "# distance_ic_prime = 50\n", + "# distance_ic_u2 = 25\n", + "# distance_Rc_u2 = 10\n", + "# distance_ic_prime_u2 = 50\n", + "# distance_iR = 25\n", + "# distance_Rc = 10\n", + "# distance_ic = 25\n", + "# distance_if = 40\n", + "# distance_iR_hat = 25\n", + "# distance_if_hat = 40\n", + "\n", + "# Simulation parameters\n", + "K = 70\n", + "N = 10000\n", + "beta_r = 0.5\n", + "beta_t = 0.5\n", + "shape = (N, 1)\n", + "shape_ris = (K // 2, N, 1)\n", + "\n", + "# Additional parameters\n", + "BANDWIDTH = constants[\"BANDWIDTH\"] # Bandwidth in Hz\n", + "TEMP = constants[\"TEMP\"] # Temperature in Kelvin\n", + "FREQ = constants[\"FREQ\"] # Frequency of carrier signal in Hz\n", + "SIGMA = constants[\"SIGMA\"] # Shadowing standard deviation in dB\n", + "\n", + "Pt = np.linspace(-40, 20, 121) # Transmit power in dBm\n", + "Pt_lin = dbm2pow(Pt) # Transmit power in linear scale\n", + "N0 = get_noise_power(BANDWIDTH, TEMP, 12) # Noise power in dBm\n", + "N0_lin = dbm2pow(N0) # Noise power in linear scale\n", + "\n", + "# Power allocation\n", + "zeta_ic = 0.3\n", + "zeta_if = 0.7\n", + "zeta_ic_hat = 0.3\n", + "zeta_if_hat = 0.7\n", + "\n", + "rho = Pt_lin / N0_lin # SNR\n", + "scale_ic = np.zeros_like(rho)\n", + "scale_ic_prime = np.linspace(0.001, 1.4, len(rho) - 20)\n", + "scale_ic[20:] = scale_ic_prime\n", + "scale_f = np.linspace(0.01, 0.15, len(rho))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Simulation" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "pathloss_iR = get_pathloss(**pathloss_cfg[\"ris\"], distance=distance_iR, frequency=FREQ)\n", + "pathloss_Rc = get_pathloss(**pathloss_cfg[\"risC\"], distance=distance_Rc, frequency=FREQ)\n", + "pathloss_ic = get_pathloss(\n", + " **pathloss_cfg[\"center\"], distance=distance_ic, frequency=FREQ\n", + ")\n", + "pathloss_ic_prime = get_pathloss(\n", + " **pathloss_cfg[\"inter\"], distance=distance_ic_prime, frequency=FREQ\n", + ")\n", + "pathloss_ic_u2 = get_pathloss(\n", + " **pathloss_cfg[\"center\"], distance=distance_ic_u2, frequency=FREQ\n", + ")\n", + "pathloss_ic_prime_u2 = get_pathloss(\n", + " **pathloss_cfg[\"inter\"], distance=distance_ic_prime_u2, frequency=FREQ\n", + ")\n", + "pathloss_Rc_u2 = get_pathloss(\n", + " **pathloss_cfg[\"risC\"], distance=distance_Rc_u2, frequency=FREQ\n", + ")\n", + "pathloss_if = get_pathloss(**pathloss_cfg[\"edge\"], distance=distance_if, frequency=FREQ)\n", + "pathloss_iR_hat = get_pathloss(\n", + " **pathloss_cfg[\"ris\"], distance=distance_iR_hat, frequency=FREQ\n", + ")\n", + "pathloss_if_hat = get_pathloss(\n", + " **pathloss_cfg[\"edge\"], distance=distance_if_hat, frequency=FREQ\n", + ")\n", + "pathloss_Rf = get_pathloss(**pathloss_cfg[\"risE\"], distance=distance_Rf, frequency=FREQ)\n", + "\n", + "samples_iR = get_rvs(**fading_cfg[\"nakagami-d\"], shape=shape_ris)\n", + "samples_Rc = get_rvs(**fading_cfg[\"nakagami-d\"], shape=shape_ris)\n", + "samples_ic = get_rvs(**fading_cfg[\"nakagami-id\"], shape=shape)\n", + "samples_ic_prime = get_rvs(**fading_cfg[\"nakagami-id\"], shape=shape)\n", + "\n", + "samples_if = get_rvs(**fading_cfg[\"nakagami-id\"], shape=shape)\n", + "samples_iR_hat = get_rvs(**fading_cfg[\"nakagami-d\"], shape=shape_ris)\n", + "samples_if_hat = get_rvs(**fading_cfg[\"nakagami-id\"], shape=shape)\n", + "samples_Rf = get_rvs(**fading_cfg[\"nakagami-d\"], shape=shape_ris)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "h_iR = np.abs(np.sqrt(db2pow(-1 * pathloss_iR)) * samples_iR)\n", + "h_Rc = np.abs(np.sqrt(db2pow(-1 * pathloss_Rc)) * samples_Rc)\n", + "h_ic = np.abs(np.sqrt(db2pow(-1 * pathloss_ic)) * samples_ic)\n", + "h_ic_prime = np.abs(np.sqrt(db2pow(-1 * pathloss_ic_prime)) * samples_ic_prime)\n", + "h_if = np.abs(np.sqrt(db2pow(-1 * pathloss_if)) * samples_if)\n", + "h_iR_hat = np.abs(np.sqrt(db2pow(-1 * pathloss_iR_hat)) * samples_iR_hat)\n", + "h_if_hat = np.abs(np.sqrt(db2pow(-1 * pathloss_if_hat)) * samples_if_hat)\n", + "h_Rf = np.abs(np.sqrt(db2pow(-1 * pathloss_Rf)) * samples_Rf)\n", + "h_ic_u2 = np.abs(np.sqrt(db2pow(-1 * pathloss_ic_u2)) * samples_ic)\n", + "h_ic_prime_u2 = np.abs(np.sqrt(db2pow(-1 * pathloss_ic_prime_u2)) * samples_ic_prime)\n", + "h_Rc_u2 = np.abs(np.sqrt(db2pow(-1 * pathloss_Rc_u2)) * samples_Rc)\n", + "\n", + "cascaded_ic = np.sum(h_iR * h_Rc, axis=0) * np.sqrt(beta_r)\n", + "H_ic = cascaded_ic + h_ic\n", + "\n", + "cascaded_if = np.sum(h_iR * h_Rf, axis=0) * np.sqrt(beta_t)\n", + "cascaded_if_hat = np.sum(h_iR_hat * h_Rf, axis=0) * np.sqrt(beta_t)\n", + "H_if = cascaded_if + h_if\n", + "H_if_hat = cascaded_if_hat + h_if_hat\n", + "\n", + "cascaded_ic_u2 = np.sum(h_iR_hat * h_Rc_u2, axis=0) * np.sqrt(beta_r)\n", + "H_ic_u2 = cascaded_ic_u2 + h_ic_u2" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.6175827748463664e-05\n", + "6.22163687414109e-06\n", + "3.2397464622604755e-05\n" + ] + } + ], + "source": [ + "print(np.mean(h_if))\n", + "print(np.mean(cascaded_if))\n", + "print(np.mean(H_if))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## SINR PDFs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### PDF of SINR $\\gamma_{i,c\\rightarrow f}$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Effective Channel $\\textbf{H}_{i, c}=\\textbf{h}_{i, c}+\\textbf{h}_{R, c}^H \\mathbf{\\Theta_r}\\textbf{h}_{i, R}$\n", + "\n", + "Channel Gain $Z_{i,c} = |H_{i,c}|^2 = (h_{i,c} + G_{i,R,c})^2$\n", + "\n", + "Direct Channel $h_{i,c}$" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "m_ic = 1\n", + "omega_ic = 2 * db2pow(-1 * pathloss_ic)\n", + "omega_ic_prime = 2 * db2pow(-1 * pathloss_ic_prime)\n", + "\n", + "omega_ic_u2 = 2 * db2pow(-1 * pathloss_ic_u2)\n", + "omega_ic_prime_u2 = 2 * db2pow(-1 * pathloss_ic_prime_u2)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "def fun_mu_h_ic(p, m_ic, omega_ic):\n", + " return (gamma(m_ic + p / 2) / gamma(m_ic)) * (m_ic / omega_ic) ** (-p / 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "mu_h_ic = fun_mu_h_ic(1, m_ic, omega_ic) # 1st moment of h_ic\n", + "mu_h_ic_2 = fun_mu_h_ic(2, m_ic, omega_ic) # 2nd moment of h_ic\n", + "\n", + "mu_h_ic_u2 = fun_mu_h_ic(1, m_ic, omega_ic_u2) # 1st moment of h_ic\n", + "mu_h_ic_2_u2 = fun_mu_h_ic(2, m_ic, omega_ic_u2) # 2nd moment of h_ic\n", + "\n", + "k_h_ic = (mu_h_ic**2) / (mu_h_ic_2 - mu_h_ic**2) # Shape parameter of h_ic\n", + "theta_h_ic = (mu_h_ic_2 - mu_h_ic**2) / mu_h_ic # Scale parameter of h_ic\n", + "\n", + "k_h_ic_u2 = (mu_h_ic_u2**2) / (mu_h_ic_2_u2 - mu_h_ic_u2**2) # Shape parameter of h_ic\n", + "theta_h_ic_u2 = (mu_h_ic_2_u2 - mu_h_ic_u2**2) / mu_h_ic_u2 # Scale parameter of h_ic" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cascaded Channel $G_{i,R,c} = \\sqrt{\\beta_r} \\sum_{k=1}^{K} |{h_{R,c}}||{h_{i,R}}|$" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "m_iR = 2\n", + "m_Rc = 2\n", + "omega_iR = 2 * db2pow(-1 * pathloss_iR)\n", + "omega_Rc = 2 * db2pow(-1 * pathloss_Rc)\n", + "omega_Rc_u2 = 2 * db2pow(-1 * pathloss_Rc_u2)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "def fun_mu_h_iR(p, m_iR, omega_iR):\n", + " return gamma(m_iR + p / 2) / gamma(m_iR) * (m_iR / omega_iR) ** (-p / 2)\n", + "\n", + "\n", + "def fun_mu_h_Rc(p, m_Rc, omega_Rc):\n", + " return gamma(m_Rc + p / 2) / gamma(m_Rc) * (m_Rc / omega_Rc) ** (-p / 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# def fun_mu_G_iRc(p, m_iR, omega_iR, m_Rc, omega_Rc, K, beta_r):\n", + "# mu = (gamma(m_iR + (1 / 2)) * gamma(m_Rc + (1 / 2))) / (\n", + "# gamma(m_iR) * gamma(m_Rc) * (m_iR * m_Rc) ** (1 / 2)\n", + "# )\n", + "# k = mu**2 / (1 - mu**2)\n", + "# theta = (1 - mu**2) / mu\n", + "\n", + "# return (\n", + "# gamma((K * k) + p) * (np.sqrt(omega_iR * omega_Rc * beta_r) * theta) ** p\n", + "# ) / gamma(K * k)\n", + "\n", + "\n", + "def fun_mu_G_iRc(p, m_iR, omega_iR, m_Rc, omega_Rc, K, beta_r):\n", + " return (\n", + " gamma(m_Rc + (p / 2))\n", + " * (np.sqrt(beta_r) * K) ** p\n", + " * gamma(m_iR + (p / 2))\n", + " * ((m_iR * m_Rc) / (omega_iR * omega_Rc)) ** (-p / 2)\n", + " ) / (gamma(m_iR) * gamma(m_Rc))\n", + "\n", + "\n", + "mu_G_iRc = fun_mu_G_iRc(\n", + " 1, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r\n", + ") # 1st moment of G_iRc\n", + "mu_G_iRc_2 = fun_mu_G_iRc(\n", + " 2, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r\n", + ") # 2nd moment of G_iRc\n", + "\n", + "mu_G_iRc_u2 = fun_mu_G_iRc(\n", + " 1, m_iR, omega_iR, m_Rc, omega_Rc_u2, K // 2, beta_r\n", + ") # 1st moment of G_iRc\n", + "mu_G_iRc_2_u2 = fun_mu_G_iRc(\n", + " 2, m_iR, omega_iR, m_Rc, omega_Rc_u2, K // 2, beta_r\n", + ") # 2nd moment of G_iRc\n", + "\n", + "\n", + "k_G_iRc = mu_G_iRc**2 / (mu_G_iRc_2 - mu_G_iRc**2) # Shape parameter of G_iRc\n", + "theta_G_iRc = (mu_G_iRc_2 - mu_G_iRc**2) / mu_G_iRc # Scale parameter of G_iRc\n", + "\n", + "k_G_iRc_u2 = mu_G_iRc_u2**2 / (\n", + " mu_G_iRc_2_u2 - mu_G_iRc_u2**2\n", + ") # Shape parameter of G_iRc\n", + "theta_G_iRc_u2 = (\n", + " mu_G_iRc_2_u2 - mu_G_iRc_u2**2\n", + ") / mu_G_iRc_u2 # Scale parameter of G_iRc" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Effective Channel Gain $Z_{i,c} = |H_{i,c}|^2 = (h_{i,c} + G_{i,R,c})^2$" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "mu_Z_ic = (\n", + " fun_mu_G_iRc(2, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r)\n", + " + fun_mu_h_ic(2, m_ic, omega_ic)\n", + " + (\n", + " 2\n", + " * fun_mu_G_iRc(1, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r)\n", + " * fun_mu_h_ic(1, m_ic, omega_ic)\n", + " )\n", + ")\n", + "\n", + "mu_Z_ic_2 = (\n", + " fun_mu_G_iRc(4, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r)\n", + " + fun_mu_h_ic(4, m_ic, omega_ic)\n", + " + (\n", + " 6\n", + " * fun_mu_G_iRc(2, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r)\n", + " * fun_mu_h_ic(2, m_ic, omega_ic)\n", + " )\n", + " + (\n", + " 4\n", + " * fun_mu_h_ic(3, m_ic, omega_ic)\n", + " * fun_mu_G_iRc(1, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r)\n", + " )\n", + " + (\n", + " 4\n", + " * fun_mu_h_ic(1, m_ic, omega_ic)\n", + " * fun_mu_G_iRc(3, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r)\n", + " )\n", + ")\n", + "\n", + "mu_Z_ic_u2 = (\n", + " fun_mu_G_iRc(2, m_iR, omega_iR, m_Rc, omega_Rc_u2, K // 2, beta_r)\n", + " + fun_mu_h_ic(2, m_ic, omega_ic_u2)\n", + " + (\n", + " 2\n", + " * fun_mu_G_iRc(1, m_iR, omega_iR, m_Rc, omega_Rc_u2, K // 2, beta_r)\n", + " * fun_mu_h_ic(1, m_ic, omega_ic_u2)\n", + " )\n", + ")\n", + "\n", + "mu_Z_ic_2_u2 = (\n", + " fun_mu_G_iRc(4, m_iR, omega_iR, m_Rc, omega_Rc_u2, K // 2, beta_r)\n", + " + fun_mu_h_ic(4, m_ic, omega_ic_u2)\n", + " + (\n", + " 6\n", + " * fun_mu_G_iRc(2, m_iR, omega_iR, m_Rc, omega_Rc_u2, K // 2, beta_r)\n", + " * fun_mu_h_ic(2, m_ic, omega_ic_u2)\n", + " )\n", + " + (\n", + " 4\n", + " * fun_mu_h_ic(3, m_ic, omega_ic_u2)\n", + " * fun_mu_G_iRc(1, m_iR, omega_iR, m_Rc, omega_Rc_u2, K // 2, beta_r)\n", + " )\n", + " + (\n", + " 4\n", + " * fun_mu_h_ic(1, m_ic, omega_ic_u2)\n", + " * fun_mu_G_iRc(3, m_iR, omega_iR, m_Rc, omega_Rc_u2, K // 2, beta_r)\n", + " )\n", + ")\n", + "\n", + "k_Z_ic = mu_Z_ic**2 / (mu_Z_ic_2 - mu_Z_ic**2) # Shape parameter of Z_ic\n", + "theta_Z_ic = (mu_Z_ic_2 - mu_Z_ic**2) / mu_Z_ic # Scale parameter of Z_ic\n", + "\n", + "k_Z_ic_u2 = mu_Z_ic_u2**2 / (\n", + " mu_Z_ic_2_u2 - mu_Z_ic_u2**2\n", + ") # Shape parameter of Z_ic\n", + "theta_Z_ic_u2 = (mu_Z_ic_2_u2 - mu_Z_ic_u2**2) / mu_Z_ic_u2 # Scale parameter of Z_ic" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$\\mathcal{V_{i,c,f}} = {\\zeta_{i,f}\\rho|\\textbf{H}_{i,c}|^2},$\n", + "\n", + "where $\\rho = \\frac{P}{\\sigma^2}$" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "simulation_V_icf = zeta_if * rho * H_ic**2\n", + "simulation_V_icf_u2 = zeta_if * rho * H_ic_u2**2" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "k_V_icf = k_Z_ic * np.ones_like(rho)\n", + "theta_V_icf = theta_Z_ic * zeta_if * rho\n", + "\n", + "k_V_icf_u2 = k_Z_ic_u2 * np.ones_like(rho)\n", + "theta_V_icf_u2 = theta_Z_ic_u2 * zeta_if * rho" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$\\mathcal{B_{i,c,f}} = {\\zeta_{i,c}\\rho|\\textbf{H}_{i,c}|^2 + \\rho|\\textbf{h}_{i,c^\\prime}|^2 + 1}$\n", + "\n", + "$\\mathcal{B_{i,c,f}} = {\\mathcal{W_{i,c}} + 1}$,\n", + "\n", + "where $\\mathcal{W_{i,c,f}} = \\zeta_{i,c}\\rho|\\textbf{H}_{i,c}|^2 + \\rho|\\textbf{h}_{i,c^\\prime}|^2$" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "simulation_W_icf = (zeta_ic * rho * H_ic**2) + (rho * h_ic_prime**2)\n", + "simulation_B_icf = simulation_W_icf + 1\n", + "\n", + "simulation_W_icf_u2 = (zeta_ic * rho * H_ic_u2**2) + (rho * h_ic_prime_u2**2)\n", + "simulation_B_icf_u2 = simulation_W_icf_u2 + 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$\\mu _{\\mathcal{W}_{ic}} = \\rho \\mu _{h_{ic}}+\\zeta \\rho \\mu _{Z_{ic}}$\n", + "\n", + "$\\mu _{\\mathcal{W}_{ic}}^{(2)} = \\rho ^2 \\left(\\zeta \\left(2 \\mu _{h_{ic}} \\mu\n", + " _{Z_{ic}}+\\zeta \\mu _{Z_{\\text{ic2}}}\\right)+\\mu\n", + " _{h_{\\text{ic2}}}\\right)$" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "def fun_mu_h_ic_sqr_interf(p, m_ic, omega_ic):\n", + " return (gamma(m_ic + p) / gamma(m_ic)) * (m_ic / omega_ic) ** (-p)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "mu_W_icf = (\n", + " rho * fun_mu_h_ic_sqr_interf(1, m_ic, omega_ic_prime) + zeta_ic * rho * mu_Z_ic\n", + ") # 1st moment of W_ic\n", + "\n", + "mu_W_icf_2 = rho**2 * (\n", + " zeta_ic\n", + " * (\n", + " (2 * fun_mu_h_ic_sqr_interf(1, m_ic, omega_ic_prime) * mu_Z_ic)\n", + " + zeta_ic * mu_Z_ic_2\n", + " )\n", + " + fun_mu_h_ic_sqr_interf(2, m_ic, omega_ic_prime)\n", + ") # 2nd moment of W_ic\n", + "\n", + "mu_W_icf_u2 = (\n", + " rho * fun_mu_h_ic_sqr_interf(1, m_ic, omega_ic_prime_u2)\n", + " + zeta_ic * rho * mu_Z_ic_u2\n", + ") # 1st moment of W_ic\n", + "\n", + "mu_W_icf_2_u2 = rho**2 * (\n", + " zeta_ic\n", + " * (\n", + " (2 * fun_mu_h_ic_sqr_interf(1, m_ic, omega_ic_prime_u2) * mu_Z_ic_u2)\n", + " + zeta_ic * mu_Z_ic_2_u2\n", + " )\n", + " + fun_mu_h_ic_sqr_interf(2, m_ic, omega_ic_prime_u2)\n", + ") # 2nd moment of W_ic\n", + "\n", + "\n", + "k_W_icf = mu_W_icf**2 / (mu_W_icf_2 - mu_W_icf**2) # Shape parameter of W_ic\n", + "theta_W_icf = (mu_W_icf_2 - mu_W_icf**2) / mu_W_icf # Scale parameter of W_ic\n", + "\n", + "k_W_icf_u2 = mu_W_icf_u2**2 / (\n", + " mu_W_icf_2_u2 - mu_W_icf_u2**2\n", + ") # Shape parameter of W_ic\n", + "theta_W_icf_u2 = (\n", + " mu_W_icf_2_u2 - mu_W_icf_u2**2\n", + ") / mu_W_icf_u2 # Scale parameter of W_ic" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "mu_B_icf = mu_W_icf + 1 # 1st moment of B_icf\n", + "mu_B_icf_2 = mu_W_icf_2 + 2 * mu_W_icf + 1 # 2nd moment of B_icf\n", + "\n", + "mu_B_icf_u2 = mu_W_icf_u2 + 1 # 1st moment of B_icf\n", + "mu_B_icf_2_u2 = mu_W_icf_2_u2 + 2 * mu_W_icf_u2 + 1 # 2nd moment of B_icf\n", + "\n", + "k_B_icf = mu_B_icf**2 / (mu_B_icf_2 - mu_B_icf**2) # Shape parameter of B_icf\n", + "theta_B_icf = (mu_B_icf_2 - mu_B_icf**2) / mu_B_icf # Scale parameter of B_icf\n", + "\n", + "k_B_icf_u2 = mu_B_icf_u2**2 / (\n", + " mu_B_icf_2_u2 - mu_B_icf_u2**2\n", + ") # Shape parameter of B_icf\n", + "theta_B_icf_u2 = (\n", + " mu_B_icf_2_u2 - mu_B_icf_u2**2\n", + ") / mu_B_icf_u2 # Scale parameter of B_icf" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "simulation_SINR_icf = simulation_V_icf / simulation_B_icf\n", + "simulation_SINR_icf_u2 = simulation_V_icf_u2 / simulation_B_icf_u2" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "def generalized_beta_prime_pdf(x, a, b, p, q):\n", + " return (p * ((x / q) ** (a * p - 1)) * (1 + (x / q) ** p) ** (-a - b)) / (\n", + " q * sp.special.beta(a, b)\n", + " )\n", + "\n", + "\n", + "def hypergeometric_f1_regularized(a, b, c):\n", + " return sp.special.hyp1f1(a, b, c) / sp.special.gamma(b)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### PDF of SINR $\\gamma_{i,c}$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$\\mathcal{V_{i,c}} = {\\zeta_{i,c}\\rho|\\textbf{H}_{i,c}|^2},$\n", + "\n", + "where $\\rho = \\frac{P}{\\sigma^2}$" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "simulation_V_ic = zeta_ic * rho * H_ic**2\n", + "simulation_V_ic_u2 = zeta_ic * rho * H_ic_u2**2" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "k_V_ic = k_Z_ic * np.ones_like(rho)\n", + "theta_V_ic = theta_Z_ic * zeta_ic * rho\n", + "\n", + "k_V_ic_u2 = k_Z_ic_u2 * np.ones_like(rho)\n", + "theta_V_ic_u2 = theta_Z_ic_u2 * zeta_ic * rho" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$\\mathcal{B_{i,c}} = {\\rho|\\textbf{h}_{i,c^\\prime}|^2 + 1}$\n", + "\n", + "$\\mathcal{B_{i,c}} = {\\mathcal{W_{i,c}} + 1}$,\n", + "\n", + "where $\\mathcal{W_{i,c}} = \\rho|\\textbf{h}_{i,c^\\prime}|^2$" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "simulation_B_ic = (rho * h_ic_prime**2) + 1\n", + "simulation_B_ic_u2 = (rho * h_ic_prime_u2**2) + 1" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "def fun_mu_h_ic_sqr_interf(p, m_ic, omega_ic):\n", + " return (gamma(m_ic + p) / gamma(m_ic)) * (m_ic / omega_ic) ** (-p)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "mu_W_ic = rho * fun_mu_h_ic_sqr_interf(1, m_ic, omega_ic_prime) # 1st moment of W_ic\n", + "mu_W_ic_2 = rho**2 * fun_mu_h_ic_sqr_interf(\n", + " 2, m_ic, omega_ic_prime\n", + ") # 2nd moment of W_ic\n", + "\n", + "mu_W_ic_u2 = rho * fun_mu_h_ic_sqr_interf(\n", + " 1, m_ic, omega_ic_prime_u2\n", + ") # 1st moment of W_ic\n", + "mu_W_ic_2_u2 = rho**2 * fun_mu_h_ic_sqr_interf(\n", + " 2, m_ic, omega_ic_prime_u2\n", + ") # 2nd moment of W_ic\n", + "\n", + "k_W_ic = mu_W_ic**2 / (mu_W_ic_2 - mu_W_ic**2) # Shape parameter of W_ic\n", + "theta_W_ic = (mu_W_ic_2 - mu_W_ic**2) / mu_W_ic # Scale parameter of W_ic\n", + "\n", + "k_W_ic_u2 = mu_W_ic_u2**2 / (\n", + " mu_W_ic_2_u2 - mu_W_ic_u2**2\n", + ") # Shape parameter of W_ic\n", + "theta_W_ic_u2 = (mu_W_ic_2_u2 - mu_W_ic_u2**2) / mu_W_ic_u2 # Scale parameter of W_ic" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "mu_B_ic = mu_W_ic + 1 # 1st moment of B_ic\n", + "mu_B_ic_2 = mu_W_ic_2 + 2 * mu_W_ic + 1 # 2nd moment of B_ic\n", + "\n", + "mu_B_ic_u2 = mu_W_ic_u2 + 1 # 1st moment of B_ic\n", + "mu_B_ic_2_u2 = mu_W_ic_2_u2 + 2 * mu_W_ic_u2 + 1 # 2nd moment of B_ic\n", + "\n", + "k_B_ic = mu_B_ic**2 / (mu_B_ic_2 - mu_B_ic**2) # Shape parameter of B_ic\n", + "theta_B_ic = (mu_B_ic_2 - mu_B_ic**2) / mu_B_ic # Scale parameter of B_ic\n", + "\n", + "k_B_ic_u2 = mu_B_ic_u2**2 / (\n", + " mu_B_ic_2_u2 - mu_B_ic_u2**2\n", + ") # Shape parameter of B_ic\n", + "theta_B_ic_u2 = (mu_B_ic_2_u2 - mu_B_ic_u2**2) / mu_B_ic_u2 # Scale parameter of B_ic" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "simulation_SINR_ic = simulation_V_ic / simulation_B_ic\n", + "simulation_SINR_ic_u2 = simulation_V_ic_u2 / simulation_B_ic_u2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### PDF of SINR $\\gamma_{f}$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Effective Channel $\\textbf{H}_{i, f}=\\textbf{h}_{i, f}+\\textbf{h}_{R, f}^H \\mathbf{\\Theta_r}\\textbf{h}_{i, R}$\n", + "\n", + "Channel Gain $Z_{i,f} = |H_{i,f}|^2 = (h_{i,f} + G_{i,R,f})^2$\n", + "\n", + "Direct Channel $h_{i,f}$\n", + "\n", + "Additionally, $\\hat{i} \\in \\mathcal{I}_c \\backslash i$" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "m_if = 1\n", + "m_if_hat = 1\n", + "omega_if = 2 * db2pow(-1 * pathloss_if)\n", + "omega_if_hat = 2 * db2pow(-1 * pathloss_if_hat)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "def fun_mu_h_if(p, m_if, omega_if):\n", + " return (gamma(m_if + p / 2) / gamma(m_if)) * (m_if / omega_if) ** (-p / 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "mu_h_if = fun_mu_h_if(1, m_if, omega_if) # 1st moment of h_if\n", + "mu_h_if_2 = fun_mu_h_if(2, m_if, omega_if) # 2nd moment of h_if\n", + "mu_h_if_hat = fun_mu_h_if(1, m_if_hat, omega_if_hat) # 1st moment of h_if_hat\n", + "mu_h_if_hat_2 = fun_mu_h_if(2, m_if_hat, omega_if_hat) # 2nd moment of h_if_hat\n", + "\n", + "k_h_if = (mu_h_if**2) / (mu_h_if_2 - mu_h_if**2) # Shape parameter of h_if\n", + "theta_h_if = (mu_h_if_2 - mu_h_if**2) / mu_h_if # Scale parameter of h_if\n", + "\n", + "k_h_if_hat = (mu_h_if_hat**2) / (\n", + " mu_h_if_hat_2 - mu_h_if_hat**2\n", + ") # Shape parameter of h_if_hat\n", + "theta_h_if_hat = (\n", + " mu_h_if_hat_2 - mu_h_if_hat**2\n", + ") / mu_h_if_hat # Scale parameter of h_if_hat" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cascaded Channel $G_{i,R,f} = \\sqrt{\\beta_t} \\sum_{k=1}^{K} |{h_{R,f}}||{h_{i,R}}|$" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "m_iR = 2\n", + "m_iR_hat = 2\n", + "m_Rf = 2\n", + "omega_iR = 2 * db2pow(-1 * pathloss_iR)\n", + "omega_iR_hat = 2 * db2pow(-1 * pathloss_iR_hat)\n", + "omega_Rf = 2 * db2pow(-1 * pathloss_Rf)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "def fun_mu_h_iR(p, m_iR, omega_iR):\n", + " return gamma(m_iR + p / 2) / gamma(m_iR) * (m_iR / omega_iR) ** (-p / 2)\n", + "\n", + "\n", + "def fun_mu_h_Rf(p, m_Rf, omega_Rf):\n", + " return gamma(m_Rf + p / 2) / gamma(m_Rf) * (m_Rf / omega_Rf) ** (-p / 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "# def fun_mu_G_iRf(p, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K, beta_t):\n", + "# mu = (gamma(m_iR_hat + (1 / 2)) * gamma(m_Rf + (1 / 2))) / (\n", + "# gamma(m_iR_hat) * gamma(m_Rf) * (m_iR_hat * m_Rf) ** (1 / 2)\n", + "# )\n", + "# k = mu**2 / (1 - mu**2)\n", + "# theta = (1 - mu**2) / mu\n", + "\n", + "# return (\n", + "# gamma((K * k) + p) * (np.sqrt(omega_iR_hat * omega_Rf * beta_t) * theta) ** p\n", + "# ) / gamma(K * k)\n", + "\n", + "\n", + "def fun_mu_G_iRf(p, m_iR, omega_iR, m_Rf, omega_Rf, K, beta_t):\n", + " return (\n", + " gamma(m_Rf + (p / 2))\n", + " * (np.sqrt(beta_t) * K) ** p\n", + " * gamma(m_iR + (p / 2))\n", + " * ((m_iR * m_Rf) / (omega_iR * omega_Rf)) ** (-p / 2)\n", + " ) / (gamma(m_iR) * gamma(m_Rf))\n", + "\n", + "\n", + "mu_G_iRf = fun_mu_G_iRf(\n", + " 1, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t\n", + ") # 1st moment of G_iRc\n", + "mu_G_iRf_2 = fun_mu_G_iRf(\n", + " 2, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t\n", + ") # 2nd moment of G_iRc\n", + "\n", + "mu_G_iRf_hat = fun_mu_G_iRf(\n", + " 1, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t\n", + ") # 1st moment of G_iRc\n", + "mu_G_iRf_hat_2 = fun_mu_G_iRf(\n", + " 2, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t\n", + ") # 2nd moment of G_iRcarameter of G_iRc\n", + "\n", + "k_G_iRf = mu_G_iRf**2 / (mu_G_iRf_2 - mu_G_iRf**2) # Shape parameter of G_iRc\n", + "theta_G_iRf = (mu_G_iRf_2 - mu_G_iRf**2) / mu_G_iRf # Scale parameter of G_iRc\n", + "\n", + "k_G_iRf_hat = mu_G_iRf_hat**2 / (\n", + " mu_G_iRf_hat_2 - mu_G_iRf_hat**2\n", + ") # Shape parameter of G_iRc\n", + "theta_G_iRf_hat = (\n", + " mu_G_iRf_hat_2 - mu_G_iRf_hat**2\n", + ") / mu_G_iRf_hat # Scale parameter of G_iRc" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Effective Channel Gain $Z_{i,f} = |H_{i,f}|^2 = (h_{i,f} + G_{i,R,f})^2$" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "mu_Z_if = (\n", + " fun_mu_G_iRf(2, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t)\n", + " + fun_mu_h_if(2, m_if, omega_if)\n", + " + (\n", + " 2\n", + " * fun_mu_G_iRf(1, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t)\n", + " * fun_mu_h_if(1, m_if, omega_if)\n", + " )\n", + ")\n", + "\n", + "mu_Z_if_2 = (\n", + " fun_mu_G_iRf(4, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t)\n", + " + fun_mu_h_if(4, m_if, omega_if)\n", + " + (\n", + " 6\n", + " * fun_mu_G_iRf(2, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t)\n", + " * fun_mu_h_if(2, m_if, omega_if)\n", + " )\n", + " + (\n", + " 4\n", + " * fun_mu_h_if(3, m_if, omega_if)\n", + " * fun_mu_G_iRf(1, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t)\n", + " )\n", + " + (\n", + " 4\n", + " * fun_mu_h_if(1, m_if, omega_if)\n", + " * fun_mu_G_iRf(3, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t)\n", + " )\n", + ")\n", + "\n", + "mu_Z_if_hat = (\n", + " fun_mu_G_iRf(2, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t)\n", + " + fun_mu_h_if(2, m_if_hat, omega_if_hat)\n", + " + (\n", + " 2\n", + " * fun_mu_G_iRf(1, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t)\n", + " * fun_mu_h_if(1, m_if_hat, omega_if_hat)\n", + " )\n", + ")\n", + "\n", + "mu_Z_if_hat_2 = (\n", + " fun_mu_G_iRf(4, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t)\n", + " + fun_mu_h_if(4, m_if_hat, omega_if_hat)\n", + " + (\n", + " 6\n", + " * fun_mu_G_iRf(2, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t)\n", + " * fun_mu_h_if(2, m_if_hat, omega_if_hat)\n", + " )\n", + " + (\n", + " 4\n", + " * fun_mu_h_if(3, m_if_hat, omega_if_hat)\n", + " * fun_mu_G_iRf(1, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t)\n", + " )\n", + " + (\n", + " 4\n", + " * fun_mu_h_if(1, m_if_hat, omega_if_hat)\n", + " * fun_mu_G_iRf(3, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t)\n", + " )\n", + ")\n", + "\n", + "k_Z_if = mu_Z_if**2 / (mu_Z_if_2 - mu_Z_if**2) # Shape parameter of Z_if\n", + "theta_Z_if = (mu_Z_if_2 - mu_Z_if**2) / mu_Z_if # Scale parameter of Z_if\n", + "\n", + "k_Z_if_hat = mu_Z_if_hat**2 / (\n", + " mu_Z_if_hat_2 - mu_Z_if_hat**2\n", + ") # Shape parameter of Z_if_hat\n", + "theta_Z_if_hat = (\n", + " mu_Z_if_hat_2 - mu_Z_if_hat**2\n", + ") / mu_Z_if_hat # Scale parameter of Z_if_hat" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$\\mathcal{V}_{f}=\\zeta_{i,f}\\rho|\\textbf{H}_{i, f}|^2 + \\zeta_{i',f}\\rho|\\textbf{H}_{i', f}|^2$" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "simulation_V_f = zeta_if * rho * H_if**2 + zeta_if_hat * rho * H_if_hat**2" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "mu_V_f = (zeta_if * rho * mu_Z_if) + (\n", + " zeta_if_hat * rho * mu_Z_if_hat\n", + ") # 1st moment of V_f\n", + "\n", + "mu_V_f_2 = rho**2 * (\n", + " (zeta_if * k_Z_if * theta_Z_if) ** 2\n", + " + (zeta_if_hat**2 * k_Z_if_hat * (1 + k_Z_if_hat) * theta_Z_if_hat**2)\n", + " + (\n", + " zeta_if\n", + " * k_Z_if\n", + " * theta_Z_if\n", + " * (zeta_if * theta_Z_if + 2 * zeta_if_hat * k_Z_if_hat * theta_Z_if_hat)\n", + " )\n", + ") # 2nd moment of V_f\n", + "\n", + "k_V_f = mu_V_f**2 / (mu_V_f_2 - mu_V_f**2) # Shape parameter of V_f\n", + "theta_V_f = (mu_V_f_2 - mu_V_f**2) / mu_V_f # Scale parameter of V_f" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$\\mathcal{B}_{f}=\\zeta_{i,c}\\rho|\\textbf{H}_{i, f}|^2 + \\zeta_{i',c}\\rho|\\textbf{H}_{i', f}|^2 + 1$\n", + "\n", + "$\\mathcal{B}_{f}=\\mathcal{W}_{f} + 1$\n", + "\n", + "$\\mathcal{W}_{f}=\\zeta_{i,c}\\rho|\\textbf{H}_{i, f}|^2 + \\zeta_{i',c}\\rho|\\textbf{H}_{i', f}|^2$" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "simulation_W_f = zeta_ic * rho * H_if**2 + zeta_ic_hat * rho * H_if_hat**2\n", + "simulation_B_f = simulation_W_f + 1" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "mu_W_f = (zeta_ic * rho * mu_Z_if) + (\n", + " zeta_ic_hat * rho * mu_Z_if_hat\n", + ") # 1st moment of W_f\n", + "\n", + "mu_W_f_2 = rho**2 * (\n", + " (zeta_ic * k_Z_if * theta_Z_if) ** 2\n", + " + (zeta_ic_hat**2 * k_Z_if_hat * (1 + k_Z_if_hat) * theta_Z_if_hat**2)\n", + " + (\n", + " zeta_ic\n", + " * k_Z_if\n", + " * theta_Z_if\n", + " * (zeta_ic * theta_Z_if + 2 * zeta_ic_hat * k_Z_if_hat * theta_Z_if_hat)\n", + " )\n", + ") # 2nd moment of W_f\n", + "\n", + "k_W_f = mu_W_f**2 / (mu_W_f_2 - mu_W_f**2) # Shape parameter of W_f\n", + "theta_W_f = (mu_W_f_2 - mu_W_f**2) / mu_W_f # Scale parameter of W_f" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "mu_B_f = mu_W_f + 1 # 1st moment of B_f\n", + "mu_B_f_2 = mu_W_f_2 + 2 * mu_W_f + 1 # 2nd moment of B_f\n", + "\n", + "k_B_f = mu_B_f**2 / (mu_B_f_2 - mu_B_f**2) # Shape parameter of B_f\n", + "theta_B_f = (mu_B_f_2 - mu_B_f**2) / mu_B_f # Scale parameter of B_f" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "simulation_SINR_f = simulation_V_f / simulation_B_f" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ergodic Rates" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$\\mathcal{R(k,m,\\theta,\\Omega)}=\\frac{1}{\\Omega \\log (2) \\Gamma (k) \\Gamma (m)}{\\pi \\csc (\\pi m) \\left(\\Omega \\Gamma (k+m) B_{\\frac{\\theta}{\\Omega }}(m,-k-m+1)-\\theta k \\Gamma (k) _3\\tilde{F}_2\\left(1,1,k+1;2,2-m;\\frac{\\theta }{\\Omega}\\right)\\right)}$" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [], + "source": [ + "def rate_matica(k, m, theta, omega):\n", + " z = theta / omega\n", + "\n", + " return np.real(\n", + " (\n", + " (np.pi * 1 / (np.sin(np.pi * m)))\n", + " * (\n", + " (\n", + " omega\n", + " * mpm.gamma(k + m)\n", + " * (-mpm.betainc(m, (-1 * k) - (1 * m) + 1, theta / omega, 0))\n", + " - (\n", + " theta\n", + " * k\n", + " * mpm.gamma(k)\n", + " * (\n", + " mpm.hyper(\n", + " [1, 1, 1 + k], [2, 2 - mpm.mpf(m)], z\n", + " )\n", + " / (mpm.gamma(2) * mpm.gamma(2 - mpm.mpf(m)))\n", + " )\n", + " )\n", + " )\n", + " )\n", + " )\n", + " / (omega * np.log(2) * mpm.gamma(mpm.mpf(k)) * mpm.gamma(mpm.mpf(m)))\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$\\mathcal{R(k,m,\\theta,\\Omega)}=\\frac{1}{{\\log (2) \\Gamma (k+m) B(k,m)}}{G_{3,3}^{3,2}\\left(\\frac{\\Omega }{\\theta }|\n", + "\\begin{array}{c}\n", + " 0,1-m,1 \\\\\n", + " 0,0,k \\\\\n", + "\\end{array}\n", + "\\right)}$" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [], + "source": [ + "def rate_meijerg(k, m, theta, omega):\n", + " return (1 / (mpm.log(2) * mpm.beta(k, m) * mpm.gamma(k + m))) * mpm.meijerg(\n", + " [[0, 1 - m], [1]], [[0, 0, k], []], mpm.mpf(omega) / mpm.mpf(theta)\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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ysfHp1665ryvOoD68ssvT/t+hGgL0qIiRDMMGTKkwbkDBw7whz/8gZ49e+Lv70+PHj0AyMzMdKc58S9jgIiICPLz8wEYMGAA48ePp3///kybNo23336b4uLieulPvF+v1xMSEkL//v3d5+r+yq7L80wsW7YMi8WCt7c3w4cPZ/To0SxYsMD9Xmtqahg5cqQ7vcFgYOjQoaSlpQGurpPVq1ejlOKnn35i6tSpJCYmsm7dOlatWkVYWBhxcXEA7Nq1i6qqKiZMmOBugbBYLPzf//1fve6zxuq9MZdccgmaprmPhw8fzr59+3A4HM1+VkueN27cOLZt28a2bdtITk5m4sSJTJo0iUOHDgGuMSq5ubksWbKEK664gtWrVzNo0CDefffdJvPdsmULGRkZ7n+HgQMHkpCQwHfffYdOp+Pbb79l9+7dzSpjnQMHDlBdXc3w4cPd54KDg+nbt2+L35cQntCykVZCnKfMZnODc1OmTCEqKoq3336byMhInE4niYmJ9QZhGgyGevdomubuGtLr9axYsYINGzbwww8/sGDBAh5//HGSk5PdQU9j9594ru7D+cTuptYaN24cb7zxBgaDgcjIyHrPUce6o04MBurO150bO3Ys//73v/n111/R6XT069ePMWPGsGbNGoqLi+t1+9SV95tvvqFbt2718jSZTO7vG6v3lmrus1ryPLPZTO/evd3HgwcPJiAggLfffptnn30WAG9vbyZMmMCECRP461//ym233caTTz7Z5EyylJQUHnzwQW677TZ8fX2JiIhw1++aNWt44okn6NKlCx9++CEbNmzAx8fntGVVJ3QltsX7EuJckxYVIVqhsLCQtLQ0nnjiCcaPH098fHyD1pDm0DSNkSNH8vTTT5OSkoLRaOTLL79s07IajUYcDsdp09V9SMXExDQIkHr37o3RaGTdunXuczU1NWzevJn4+HgA9ziV+fPnM2bMGDRNY8yYMaxevbrB+JR+/fphMpnIzMykd+/e9V7NHUNzok2bNjU47tOnD3q9vs2f1RhN09DpdFRWVp4yTb9+/Zqc7n3w4EFKSkqYMGECvXv3JjIysl5gOGbMGBITE1m5ciUpKSnNClLA9W9nMBjq1VFxcTF79+5tk/clxNkmLSpCtEJQUBAhISEsWrSIiIgIMjMzeeSRR1qUR3JyMitXrmTixIl07dqV5ORkjh496v7gbyuxsbEkJye7uxSCg4PR6Vr2N4rZbOauu+7iwQcfJDg4mOjoaObNm0dFRQW33nor4Jq6OnDgQN5//333tO7Ro0czbdo0ampqGDt2rDs/Pz8/5syZw/3334/T6WTUqFFYrVY2bNiAxWJhxowZLSpfVlYWs2fP5s4772Tr1q0sWLDAPbOlrZ8FrhlQhw8fBlwf+q+99ho2m40pU6ZQWFjItGnTuOWWW7jwwgvx8/Nj8+bNzJs3j6lTp54yz7qBtIMHDz5lmuzs7BYHVxaLhVtvvZUHH3yQkJAQwsLCePzxxxv9GWjqfQnhKRKoCNEKOp2Ojz/+mHvvvZfExET69u3Lq6++Wu/D+HT8/f1Zu3Yt8+fPx2q1EhMTw4svvsikSZPatKxz5sxhxowZ9OvXj8rKStLT04mNjW1xPs8//zxOp5Pp06dTVlbGkCFD+P777wkKCnKnGTduHFu3bnXXQ1BQEP369SM3N7dBAPbMM8/QtWtX5s6dy8GDBwkMDGTQoEE89thjLS7bTTfdRGVlJUOHDkWv13PPPfdwxx13nJVngWtqekREBOAKhOLi4vjss88YO3YsdrudYcOG8fLLL7vH9kRFRXH77bc3+by6mVSBgYGNXs/Ozm7QddVcL7zwAjabjauuugo/Pz8eeOABSktLW/S+hPAUTbWkA1MIIdqZsWPHMnDgQObPn+/popxVP/30EwsWLODTTz9tMt25qA9N0/jyyy+5+uqrz9ozhKgjY1SEEKIDSExMZN++ffTv3/+0M38WLlyIxWJhx44dbVqGmTNnYrFY2jRPIU5HWlSEEB3a+dKi0lw5OTnuwa/R0dEYjcY2yzs/Px+r1Qq4ptq3xawsIU5HAhUhhBBCtFvS9SOEEEKIdksCFSGEEEK0WxKoCCGEEKLdkkBFCCGEEO2WBCpCCCGEaLckUBFCCCFEuyWBihBCCCHaLQlUhBBCCNFuSaAihBBCiHZLAhUhhBBCtFv/H3tdIlIwVlkGAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "mpm.mp.dps = 25\n", + "\n", + "rate_ic = np.zeros_like(rho)\n", + "rate_icH = np.zeros_like(rho)\n", + "rate_f = np.zeros_like(rho)\n", + "rate_ic_u2 = np.zeros_like(rho)\n", + "rate_icH_u2 = np.zeros_like(rho)\n", + "\n", + "for i in range(len(rho)):\n", + " rate_ic[i] = rate_meijerg(k_V_ic[i], k_B_ic[i], theta_V_ic[i], theta_B_ic[i])\n", + " rate_icH[i] = rate_meijerg(k_V_ic[i], k_W_ic[i], theta_V_ic[i], theta_W_ic[i])\n", + " rate_icH_u2[i] = rate_meijerg(\n", + " k_V_ic_u2[i], k_W_ic_u2[i], theta_V_ic_u2[i], theta_W_ic_u2[i]\n", + " )\n", + " rate_ic_u2[i] = rate_meijerg(\n", + " k_V_ic_u2[i], k_B_ic_u2[i], theta_V_ic_u2[i], theta_B_ic_u2[i]\n", + " )\n", + " rate_f[i] = rate_meijerg(k_V_f[i], k_B_f[i], theta_V_f[i], theta_B_f[i])\n", + "\n", + "plt.plot(Pt, rate_icH, label=\"High SNR Asymptote $R_{ic}$\", linestyle=\"--\")\n", + "plt.plot(Pt, rate_ic, label=\"Analytical $R_{ic}$\")\n", + "plt.plot(Pt, rate_ic_u2, label=\"Analytical $R_{ic_{u2}}$\")\n", + "plt.plot(Pt, rate_icH_u2, label=\"High SNR Asymptote $R_{ic_{u2}}$\")\n", + "plt.plot(Pt, rate_f, label=\"Analytical $R_f$\")\n", + "plt.plot(\n", + " Pt,\n", + " np.log2(1 + np.mean(simulation_SINR_ic, axis=0)) - scale_ic,\n", + " linestyle=\"\",\n", + " marker=\"o\",\n", + " markevery=10,\n", + " label=\"Simulation $R_{ic}$\",\n", + ")\n", + "plt.plot(\n", + " Pt,\n", + " np.log2(1 + np.mean(simulation_SINR_ic_u2, axis=0)) - scale_ic,\n", + " linestyle=\"\",\n", + " marker=\"o\",\n", + " markevery=10,\n", + " label=\"Simulation $R_{ic_{u2}}$\",\n", + ")\n", + "plt.plot(\n", + " Pt,\n", + " np.log2(1 + np.mean(simulation_SINR_f, axis=0)) + scale_f,\n", + " linestyle=\"\",\n", + " marker=\"d\",\n", + " markevery=10,\n", + " label=\"Simulation $R_f$\",\n", + ")\n", + "plt.xlabel(\"Transmit Power per BS $P_t$ [dB]\")\n", + "plt.ylabel(\"Rate [bits/s/Hz]\")\n", + "# place legend on best position\n", + "plt.legend(loc=\"upper left\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Outage Probabilities" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$Pr(\\lambda_{f}\\lt\\lambda_{th_f})=\\frac{1}{{k B(k,m)}}{\\left(\\frac{2^{\\lambda_{th} /10} \\Omega }{\\theta }\\right)^k \n", + " {_2F_1\\left(k,k+m;k+1;-\\frac{2^{\\lambda_{th} /10} \\Omega }{\\theta\n", + " }\\right)}}$" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "def outage_lt(k_V_ic, k_B_ic, theta_V_ic, theta_B_ic, lambda_th):\n", + " return (\n", + " (((2 ** (lambda_th / 10) * theta_B_ic) / theta_V_ic) ** k_V_ic)\n", + " * mpm.hyp2f1(\n", + " k_V_ic,\n", + " k_B_ic + k_V_ic,\n", + " k_V_ic + 1,\n", + " -((2 ** (lambda_th / 10) * theta_B_ic) / theta_V_ic),\n", + " )\n", + " / (k_V_ic * mpm.beta(k_V_ic, k_B_ic))\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$Pr(\\lambda_{i,c\\rightarrow f}\\gt\\lambda_{th_f}, \\lambda_{i,c}\\lt\\lambda_{th_c})=1-\\left(1-\\frac{\\left(\\frac{\\theta _{B_{\\text{ic}}}\n", + " 2^{\\frac{\\lambda _{\\text{th}_c}}{10}}}{\\theta_{V_{\\text{ic}}}}\\right)^{k_{V_{\\text{ic}}}}{_2F_1}\\left(k_{V_{\\text{ic}}},k_{B_{\\text{ic}}}+k_{V_{\\text{ic}}};k_{V_{\\text{ic}}}+1;-\\frac{2^{\\frac{\\lambda _{\\text{th}_c}}{10}} \\theta_{B_{\\text{ic}}}}{\\theta_{V_{\\text{ic}}}}\\right)}{k_{V_{\\text{ic}}}B\\left(k_{V_{\\text{ic}}},k_{B_{\\text{ic}}}\\right)}\\right) \\left(1-\\frac{\\Gamma\\left(k_{B_{\\text{icf}}}\\right)-\\Gamma\\left(k_{B_{\\text{icf}}}+k_{V_{\\text{icf}}}\\right)\\left(\\frac{\\theta _{B_{\\text{icf}}} 2^{\\frac{\\lambda_{\\text{th}_f}}{10}}}{\\theta_{V_{\\text{icf}}}}\\right)^{k_{V_{\\text{icf}}}}{_2\\tilde{F}_1}\\left(k_{V_{\\text{icf}}},k_{B_{\\text{icf}}}+k_{V_{\\text{icf}}};k_{V_{\\text{icf}}}+1;-\\frac{2^{\\frac{\\lambda _{\\text{th}_f}}{10}} \\theta\n", + " _{B_{\\text{icf}}}}{\\theta_{V_{\\text{icf}}}}\\right)}{\\Gamma\\left(k_{B_{\\text{icf}}}\\right)}\\right)$" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [], + "source": [ + "def outage_clt(\n", + " k_V_icf,\n", + " k_B_icf,\n", + " theta_V_icf,\n", + " theta_B_icf,\n", + " k_V_ic,\n", + " k_B_ic,\n", + " theta_V_ic,\n", + " theta_B_ic,\n", + " lambda_th_f,\n", + " lambda_th_c,\n", + "):\n", + " return (\n", + " (((2 ** (lambda_th_c / 10) * theta_B_ic) / theta_V_ic) ** k_V_ic)\n", + " * mpm.hyp2f1(\n", + " k_V_ic,\n", + " k_B_ic + k_V_ic,\n", + " k_V_ic + 1,\n", + " -((2 ** (lambda_th_c / 10) * theta_B_ic) / theta_V_ic),\n", + " )\n", + " / (k_V_ic * mpm.beta(k_V_ic, k_B_ic))\n", + " ) * (\n", + " (\n", + " gamma(k_B_icf)\n", + " - (\n", + " gamma(k_B_icf + k_V_icf)\n", + " * (((2 ** (lambda_th_f / 10) * theta_B_icf) / theta_V_icf) ** k_V_icf)\n", + " * (\n", + " (\n", + " mpm.hyp2f1(\n", + " k_V_icf,\n", + " k_B_icf + k_V_icf,\n", + " k_V_icf + 1,\n", + " -((2 ** (lambda_th_f / 10) * theta_B_icf) / theta_V_icf),\n", + " )\n", + " )\n", + " / (gamma(k_V_icf + 1))\n", + " )\n", + " )\n", + " )\n", + " / (gamma(k_B_icf))\n", + " ) + (\n", + " (((2 ** (lambda_th_f / 10) * theta_B_icf) / theta_V_icf) ** k_V_icf)\n", + " * mpm.hyp2f1(\n", + " k_V_icf,\n", + " k_B_icf + k_V_icf,\n", + " k_V_icf + 1,\n", + " -((2 ** (lambda_th_f / 10) * theta_B_icf) / theta_V_icf),\n", + " )\n", + " / (k_V_icf * mpm.beta(k_V_icf, k_B_icf))\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# fmt: off\n", + "outage_ic = qfunc(\n", + " (np.mean(pow2db(sp.stats.betaprime.rvs(k_V_ic, k_B_ic, loc=0, scale=theta_V_ic / theta_B_ic,\n", + " size=(N*20, len(rho)))) - (-N0) - (-110), axis=0) / 6\n", + "))\n", + "simulation_outage_ic = qfunc(\n", + " (np.mean(pow2db(simulation_SINR_ic) - (-N0) - (-110), axis=0) / 6)\n", + ")\n", + "simulation_outage_ic_u2 = qfunc(\n", + " (np.mean(pow2db(simulation_SINR_ic_u2) - (-N0) - (-110), axis=0) / 6)\n", + ")\n", + "outage_ic_u2 = qfunc(\n", + " (np.mean(pow2db(sp.stats.betaprime.rvs(k_V_ic_u2, k_B_ic_u2, loc=0, scale=theta_V_ic_u2 / theta_B_ic_u2, size=(N*20, len(rho)))) - (-N0) - (-110), axis=0) / 6\n", + "))\n", + "outage_f = qfunc(\n", + " (np.mean(pow2db(sp.stats.betaprime.rvs(k_V_f, k_B_f, loc=0, scale=theta_V_f / theta_B_f, \n", + " size=(N*20, len(rho)))) - (-N0) - (-110), axis=0) / 6\n", + "))\n", + "simulation_outage_f = qfunc(\n", + " (np.mean(pow2db(simulation_SINR_f) - (-N0) - (-110), axis=0) / 6)\n", + ")\n", + "# fmt: on\n", + "\n", + "plt.semilogy(Pt, outage_ic, label=\"Analytical Pr$_{ic}$\")\n", + "plt.semilogy(Pt, outage_ic_u2, label=\"Analytical Pr$_{ic_{u2}}$\")\n", + "plt.semilogy(Pt, outage_f, label=\"Analytical Pr$_f$\")\n", + "plt.semilogy(\n", + " Pt,\n", + " simulation_outage_ic,\n", + " linestyle=\"\",\n", + " marker=\"o\",\n", + " markevery=10,\n", + " label=\"Simulation Pr$_{ic}$\",\n", + ")\n", + "plt.semilogy(\n", + " Pt,\n", + " simulation_outage_ic_u2,\n", + " linestyle=\"\",\n", + " marker=\"d\",\n", + " markevery=10,\n", + " label=\"Simulation Pr$_{ic_{u2}}$\",\n", + ")\n", + "plt.semilogy(\n", + " Pt,\n", + " simulation_outage_f,\n", + " linestyle=\"\",\n", + " marker=\"d\",\n", + " markevery=10,\n", + " label=\"Simulation Pr$_{f}$\",\n", + ")\n", + "# plt.ylim(1e-3, None)\n", + "plt.legend(loc=\"lower left\")\n", + "plt.xlabel(\"Transmit Power per BS $P_t$ [dB]\")\n", + "plt.ylabel(\"Outage Probability\")\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "simcomm", + "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.10.12" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/research/statistical_analysis/experimental.ipynb b/research/statistical_analysis/experimental.ipynb new file mode 100644 index 0000000..26b629f --- /dev/null +++ b/research/statistical_analysis/experimental.ipynb @@ -0,0 +1,356 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import argparse\n", + "import os\n", + "\n", + "import numpy as np\n", + "from config import constants, environment, setting\n", + "import matplotlib.pyplot as plt\n", + "\n", + "import simcomm.core.propagation as prop\n", + "from simcomm.core import STAR, LinkCollection, Receiver, Simulator, Transmitter\n", + "from simcomm.utils import dbm2pow, pow2db, pow2dbm, db2pow, qfunc\n", + "from colorama import Fore, Style" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "environment = {\n", + " \"positions\": {\n", + " \"BS1\": [-50, 0, 25], # BS1 position\n", + " \"BS2\": [50, 0, 25], # BS2 position\n", + " \"RIS\": [0, 25, 5], # RIS position\n", + " \"Uf\": [0, 35, 1], # Uf position\n", + " \"U1c\": [-40, 18, 1], # U1c position\n", + " \"U2c\": [30, 22, 1], # U2c position\n", + " },\n", + " \"fading\": {\n", + " \"rayleigh\": {\"type\": \"rayleigh\", \"sigma\": 1}, # Rayleigh fading\n", + " \"ricianE\": {\n", + " \"type\": \"rician\",\n", + " \"K\": 4,\n", + " \"sigma\": 1,\n", + " }, # Rician fading for edge users\n", + " \"ricianC\": {\n", + " \"type\": \"rician\",\n", + " \"K\": 3,\n", + " \"sigma\": 1,\n", + " }, # Rician fading for center users\n", + " },\n", + " \"pathloss\": {\n", + " \"center\": {\"type\": \"free-space\", \"alpha\": 3, \"p0\": 30}, # Center users\n", + " \"ris\": {\"type\": \"free-space\", \"alpha\": 3, \"p0\": 30}, # BS to RIS\n", + " \"risC\": {\"type\": \"free-space\", \"alpha\": 2.7, \"p0\": 30}, # RIS to center users\n", + " \"risE\": {\"type\": \"free-space\", \"alpha\": 2.3, \"p0\": 30}, # RIS to edge user\n", + " \"edge\": {\"type\": \"free-space\", \"alpha\": 3.5, \"p0\": 30}, # Edge users\n", + " \"inter\": {\"type\": \"free-space\", \"alpha\": 4, \"p0\": 30}, # Interference links\n", + " },\n", + "}\n", + "\n", + "setting = {\n", + " \"ris32\": {\n", + " \"ris_enhanced\": True, # RIS with 32 elements\n", + " \"ris_elements\": 32,\n", + " \"comp_enabled\": True, # CoMP enabled\n", + " },\n", + " \"no_ris\": {\n", + " \"ris_enhanced\": False, # No RIS\n", + " \"comp_enabled\": True, # CoMP enabled\"\n", + " },\n", + " \"ris70\": {\n", + " \"ris_enhanced\": True, # RIS with 70 elements\n", + " \"ris_elements\": 70,\n", + " \"comp_enabled\": True, # CoMP enabled\n", + " },\n", + " \"no_ris_non_comp\": {\n", + " \"ris_enhanced\": False, # No RIS\n", + " \"comp_enabled\": False, # CoMP disabled\n", + " },\n", + "}\n", + "\n", + "constants = {\n", + " \"BANDWIDTH\": 1e6, # Bandwidth in Hz\n", + " \"TEMP\": 300, # Temperature in Kelvin\n", + " \"FREQ\": 2.4e9, # Frequency of carrier signal in Hz\n", + " \"SIGMA\": 6.32, # Shadowing standard deviation in dB\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "all_results = [] # Store all results" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "link_option = \"ris70\" # Select the link option\n", + "N = 10000 # Number of samples\n", + "\n", + "# Load the environment\n", + "pathloss_cfg = environment[\"pathloss\"]\n", + "fading_cfg = environment[\"fading\"]\n", + "positions = environment[\"positions\"]\n", + "\n", + "# Additional parameters\n", + "BANDWIDTH = constants[\"BANDWIDTH\"] # Bandwidth in Hz\n", + "TEMP = constants[\"TEMP\"] # Temperature in Kelvin\n", + "FREQ = constants[\"FREQ\"] # Frequency of carrier signal in Hz\n", + "SIGMA = constants[\"SIGMA\"] # Shadowing standard deviation in dB\n", + "\n", + "Pt = np.linspace(-50, 30, 161) # Transmit power in dBm\n", + "Pt_lin = dbm2pow(Pt) # Transmit power in linear scale\n", + "N0 = prop.get_noise_power(BANDWIDTH, TEMP, 12) # Noise power in dBm\n", + "P_circuit = 10 ** (-3) # Circuit power in watts\n", + "\n", + "params = setting[link_option]\n", + "ris_enhanced = params[\"ris_enhanced\"] # Whether to use RIS-enhanced transmission\n", + "comp_enabled = params[\"comp_enabled\"] # Whether to use computation offloading\n", + "\n", + "# Create the base stations\n", + "BS1 = Transmitter(\"BS1\", positions[\"BS1\"], Pt_lin, {\"U1c\": 0.3, \"Uf\": 0.7})\n", + "BS2 = Transmitter(\"BS2\", positions[\"BS2\"], Pt_lin, {\"U2c\": 0.3, \"Uf\": 0.7})\n", + "\n", + "# Create the users (identical)\n", + "U1c = Receiver(\"U1c\", positions[\"U1c\"], sensitivity=-110)\n", + "U2c = Receiver(\"U2c\", positions[\"U2c\"], sensitivity=-110)\n", + "Uf = Receiver(\"Uf\", positions[\"Uf\"], sensitivity=-110)\n", + "\n", + "# Initialize the link collection (containing channel information)\n", + "links = LinkCollection(N, FREQ)\n", + "\n", + "# Add the center links to the collection\n", + "links.add_link(BS1, U1c, fading_cfg[\"rayleigh\"], pathloss_cfg[\"center\"], \"1,c\")\n", + "links.add_link(BS2, U2c, fading_cfg[\"rayleigh\"], pathloss_cfg[\"center\"], \"2,c\")\n", + "\n", + "# Add the edge links to the collection\n", + "links.add_link(BS1, Uf, fading_cfg[\"rayleigh\"], pathloss_cfg[\"edge\"], \"f\")\n", + "links.add_link(BS2, Uf, fading_cfg[\"rayleigh\"], pathloss_cfg[\"edge\"], \"f\")\n", + "\n", + "# Add interference links to the collection\n", + "links.add_link(BS1, U2c, fading_cfg[\"rayleigh\"], pathloss_cfg[\"inter\"], \"i,c\")\n", + "links.add_link(BS2, U1c, fading_cfg[\"rayleigh\"], pathloss_cfg[\"inter\"], \"i,c\")" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "K = params[\"ris_elements\"] # Number of RIS elements\n", + "\n", + "# Create the STAR-RIS element\n", + "RIS = STAR(\"RIS\", positions[\"RIS\"], elements=K)\n", + "\n", + "# Add the RIS links to the collection\n", + "links.add_link(BS1, RIS, fading_cfg[\"ricianC\"], pathloss_cfg[\"ris\"], \"ris,b1\")\n", + "links.add_link(BS2, RIS, fading_cfg[\"ricianC\"], pathloss_cfg[\"ris\"], \"ris,b2\")\n", + "links.add_link(RIS, U1c, fading_cfg[\"ricianC\"], pathloss_cfg[\"risC\"], \"ris,b1\")\n", + "links.add_link(RIS, U2c, fading_cfg[\"ricianC\"], pathloss_cfg[\"risC\"], \"ris,b2\")\n", + "links.add_link(RIS, Uf, fading_cfg[\"ricianE\"], pathloss_cfg[\"risE\"], \"ris,f\")" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.6346249455791637e-05" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.mean(np.abs(links.get_link(BS1, Uf)))" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "# Set the RIS phase shifts\n", + "RIS.set_reflection_parameters(links, [BS1, BS2], [U1c, U2c])\n", + "RIS.set_transmission_parameters(links, [BS1, BS2], Uf)\n", + "\n", + "# Merge the links\n", + "RIS.merge_link(links, BS1, U1c)\n", + "RIS.merge_link(links, BS2, U2c)\n", + "RIS.merge_link(links, [BS1, BS2], Uf)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "5.4069784312938794e-05" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.mean(np.abs(links.get_link(BS1, Uf)))" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36mDone!\u001b[0m\n" + ] + } + ], + "source": [ + "Pt_lin = dbm2pow(Pt)\n", + "N0_lin = dbm2pow(N0)\n", + "\n", + "sum_rate = np.zeros((N, len(Pt)))\n", + "\n", + "# Compute the SNRs\n", + "U1c.snr = BS1.get_allocation(U1c) * (\n", + " (Pt_lin * links.get_gain(BS1, U1c)) / (Pt_lin * links.get_gain(BS2, U1c) + N0_lin)\n", + ")\n", + "U1c.rate = np.log2(1 + U1c.snr)\n", + "\n", + "U2c.snr = BS2.get_allocation(U2c) * (\n", + " (Pt_lin * links.get_gain(BS2, U2c)) / (Pt_lin * links.get_gain(BS1, U2c) + N0_lin)\n", + ")\n", + "U2c.rate = np.log2(1 + U2c.snr)\n", + "\n", + "snr_BS1 = (Pt_lin * links.get_gain(BS1, Uf)) / (\n", + " N0_lin + Pt_lin * links.get_gain(BS2, Uf)\n", + ")\n", + "snr_BS2 = (Pt_lin * links.get_gain(BS2, Uf)) / (\n", + " N0_lin + Pt_lin * links.get_gain(BS1, Uf)\n", + ")\n", + "\n", + "Uf.snr = (BS1.get_allocation(Uf) * snr_BS1 + BS2.get_allocation(Uf) * snr_BS2) / (\n", + " BS1.get_allocation(U1c) * snr_BS1 + BS2.get_allocation(U2c) * snr_BS2 + 1\n", + ")\n", + "Uf.rate = np.log2(1 + Uf.snr)\n", + "\n", + "sum_rate = np.mean(U1c.rate + U2c.rate + Uf.rate, axis=0)\n", + "energy_efficiency = sum_rate / (Pt_lin * 2 + P_circuit)\n", + "spectral_efficiency = sum_rate\n", + "\n", + "U1c.outage = np.mean(qfunc((pow2db(U1c.snr) - (-N0) - U1c.sensitivity) / SIGMA), axis=0)\n", + "U2c.outage = np.mean(qfunc((pow2db(U2c.snr) - (-N0) - U2c.sensitivity) / SIGMA), axis=0)\n", + "Uf.outage = np.mean(qfunc((pow2db(Uf.snr) - (-N0) - Uf.sensitivity) / SIGMA), axis=0)\n", + "\n", + "print(f\"{Fore.CYAN}Done!{Style.RESET_ALL}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Append Results" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [], + "source": [ + "all_results.append(\n", + " {\n", + " \"rates\": [\n", + " np.mean(U1c.rate, axis=0),\n", + " np.mean(U2c.rate, axis=0),\n", + " np.mean(Uf.rate, axis=0),\n", + " ],\n", + " \"sum_rate\": sum_rate,\n", + " \"outage\": [U1c.outage, U2c.outage, Uf.outage],\n", + " \"se\": spectral_efficiency,\n", + " \"ee\": energy_efficiency,\n", + " }\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAArMAAAINCAYAAAAtJ/ceAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABvLElEQVR4nO3deVxU9f7H8dfMsIOgiAIqKor7vmtmapZmpdlqtmjdNluulV4r69d661rdW9l+W6xuq7ZZVpZLmVpqpqLivosgiIACsjNzfn8MjI4MBgozDLyfjzuPOXPOZ2Y+nFv47uv3fI/JMAwDEREREREvZPZ0AyIiIiIiZ0phVkRERES8lsKsiIiIiHgthVkRERER8VoKsyIiIiLitRRmRURERMRrKcyKiIiIiNdSmBURERERr+Xj6QbczWazcejQIRo0aIDJZPJ0OyIiIiJyCsMwyMnJoVmzZpjNpx97rXdh9tChQ8TExHi6DRERERH5CwcPHqRFixanral3YbZBgwaA/eSEhoZ6uBsREREROVV2djYxMTGO3HY69S7Mlk0tCA0NVZgVERERqcUqMyVUF4CJiIiIiNdSmBURERERr6UwKyIiIiJeS2FWRERERLyWwqyIiIiIeC2FWRERERHxWgqzIiIiIuK1FGZFRERExGspzIqIiIiI11KYFRERERGvpTArIiIiIl5LYVZEREREvJbCrIiIiIh4LYVZEREREfFaCrMiIiIi4rUUZkVERETEa/l4ugERERERAJvNwGoY2AwDmw2shoHVZpzYbzOwGWBQ+mwYGIb9vUbpfvtz6bHS/TjqT6o5advV+22Ozz75M50/18B+oKz+ZKe8tO879fWp7/mLNxic/jvKva7q97n4jFOr+rYOJyLE38U7PUdhVkREpA4yDIPCEhsFxVbyi60UFNvIL7JvF568r3S7qMRGidVGsdVGkdWg2GqjuMRGic2gqHS72GqjuOxY6XaRtex99v3Wk4KntSyUnrLPOaCeCK1S+31y6wAi4hRmRURE5DSKSmwcyysiM6+IzNwisvKKySks4XhBCTkFJRwvLOZ4Ydn2yftL7OG0yEpBidXl6KA3M5nAbDJhNoEJE6X/w1T62uR4bcIEjuNms8lpv6n0oOl07zf99eeWvTaX1pfv13nnqSWnvufk16ZTqsvVujo5lfyu8scq/94GAbUvOta+jkREROoYwzDILighLbuA1OwCDmcXcji7gKO59sBqfy7maK59O6ewpFq/39diIsDXQoCvhUBfCwG+5tLnsocZfx8LvhYzfj4mfMxmfC1mfH1M+Fns2z6WE9v2h8l528eMr9mM2QwWkwmL2YTZbDqx7XjGeX/pdkXvM5k4adtFYpR6T2FWRETkLFltBoezCziYmcfBo/mlz3kkHc3ncHYBh7MLKCi2VekzzSZoFORHo2A/wgJ9aRDgQ4MAX0L8fezb/j6EBPiUvrYfD/b3IdjvREgN9LMQ4GPGx6LrvaXuUpgVERGppOyCYnanHWd32nH2lD7vTc8l6Wgexda//jv9sEBfIkP9iQwNoGmDACJC7GE1vDS0hgf70ijIj/BgP0IDfDGbNRIp8lcUZkVERE5hsxnsz8glITmLzclZbE3JZtfh46TlFFb4Hh+ziWYNA4kJDySmURAx4UG0aBRIdFigI8AG+Frc+FOI1A8KsyIiUu8lH8tn7f5MNidnkZCcxZbk7ArnrUaG+hPXNIS4JiHENQ2hbdMQWjUOJio0AItGUkXcTmFWRETqFcMwSDqaz+q9GfyxL5PVezNIOppfrs7fx0yn6FC6NQ+ja/NQ2kc2oG3TEEIDfD3QtYhURGFWRETqvKy8Yn7dmcayHUf4Y18mycecw6vFbKJrs1B6xDSka/MwujUPo13TEF04JeIFFGZFRKROOpiZx+Kth1my7TBr9mVSctKi/D5mE91bhDGwTWMGtGlMn1aNCPHXH4ki3kj/5oqISJ1gGAZbU7L5MSGVJdsOsz01x+l4+8gQRnSKZHDbCHq3akiQn/4IFKkL9G+yiIh4teRj+Xy7IZlv4pPZefi4Y7/FbKJf60Zc0CmSCztH0qpxsAe7FJGaojArIiJep6jExs/bDvPpmkR+253uuG2rn8XM8I5NuKhrFMPaN6VRsJ9nGxWRGqcwKyIiXuNwdgEfrTrAnD8TST9e5Ng/sE04l/dqzkVdowkL1GoDIvWJwqyIiNR6CUlZzP5tL99vSnFcyBUR4s81fVswvl+MphCI1GMKsyIiUmut2ZfJq7/sYsWudMe+fq0bcfPgWC7sHImvls4SqfcUZkVEpNZZuSedWUt2sWZfJmC/mGtM92j+dm4s3Vs09GxzIlKrKMyKiEitsTk5i+d+2u4YifWzmLmqbwvuHNqWmPAgD3cnIrWRwqyIiHhc8rF8nvtxO/M3HgLA12JiQv+W3DmsLdFhgR7uTkRqM4VZERHxmIJiK28v38sbv+6moNgGwGU9mzHtwg60bKyR2NMyDLBZwVoI1iIoKbI/lz1KCsFafMrx0n0lhWArBlsJ2Gz2Z8Na+tpqfzi9LgHDdspr64nak18bhr2W0mfD5mKfYX84vba5qCl7bVTycx0nx/k8cbr9f1H7l++vSq3h8vAZ9VVuf0UqU1PZzwJu+BJiz6tcrZsozIqIiEf8sv0wj8/fwsHMfAD6x4bz2KWd6do8zMOd1YCSIijIOulxFAqyoSgXivNOes6D4tzS55P2O46VPlsL7YG0skFFpLoYNk93UI7CrIiIuFXG8UKe/G6rY0pBVGgAD1/SiTHdozGZTB7urhKsxZCbDrlpkHsEjh+xbx9Ps+/Pz7QH1vxjJ8JrSb57erP4g48/WPzsD5/SZ4s/WHxLj/meeG22gNkHTKXPZov94fTaB0zmU15bTtSe+tpkBkz2Z5Opgtc4vz7te6jkZ5rs25T+M+T0j1LZPlP5fU77K7uvpj7zbL6nqs7wfcFNzvD7ao7CrIiIuIVhGMzfeIgnv9tKZm4RZhPcNqQNU0a0I9i/lvxxVHgcspJKHwdPbGcnl4bVNMg/euaf7x8KAQ0hIAwCQsEvGHyDTnoOAt/g0ufT7PfxPyWg+pWGSi/4jwGRalZLfnuIiEhdlpVXzMPzEvghIQWAjlENeP6q7p5ZZiv/GGTugYy9pc+7IWMPZO6FgmOV+wyTBYIj7KNUwU0gpOmJ7aDGENiwNLCe9PAPtY9ciki1UpgVEZEatXpvBlPnbuBQVgE+ZhN/P78ddw5ri59PDd/woLgAjmyHw1vg8GZITbC/zj1y+vcFNISwFs6P0Bb2wFoWWgPDwawbNojUBgqzIiJSI6w2g5eX7OTVpbsxDGjdOIiXr+1Fj5iGNfBlxZC6CQ6ugeR1kLoZ0nfar7B3JSQSGsdBeBv7c+O2EN4WGsaAf4Pq709EaozCrIiIVLvM3CLunRPvuPnBNX1b8PiYLtU3NzY3A5LWwME/SgPsetcXWQU2gsiuENUNIrtA084Q0U6BVaQOUZgVEZFqtSnpGHd+vJ7kY/kE+lp49spuXNaz+dl9aEkRHFwNu5fA7p/t0wZOFdgIYgZAi74Q1QOiukKDaF0UJVLHKcyKiEi1+SY+mQe+2kRRiY3WjYP474196BgVemYfdnT/ifC6bzkUHXc+HtEBYvrbA2zMAPuIq4KrSL2jMCsiImfNMAxe/nkXs5bsAuCCTk154ZqehAX6Vu2DjuyALd/A1m8gbavzseAmEHeB/dFmOAQ3rpbeRcS7KcyKiMhZKSyx8tBXCcyLTwbgjvPa8OBFHTGbKzlKmpUMCZ/Dps+dA6zJYh9xbVcaYCO7aQUBESlHYVZERM5YTkExt/5vLX/sy8RiNvH0uK5M6N/yr99YUghb58OGj2HvMhy3ZTX7Qtvzocs46DDaPg9WROQ0FGZFROSMZOYWMem9NSQkZxHi78ObN/RmSLu/uNVl5j5Y9z7Efwx5GSf2tzoXelwLncbYbzggIlJJCrMiIlJlKVn53Dh7DbvTjhMe7MeHf+tP1+ZhrosNAxJXw6rXYPsPOEZhQ5tD74nQYwI0auW23kWkblGYFRGRKknMyGPCO6tJPpZPdFgAH90ygLimIeULbTbY8QP8NguS157Y33YE9LsF2o0Ci/4YEpGzo98iIiJSaQczTwTZ1o2D+PjWAbRoFORcVBZif30ODifY91n87dMIBt0DTdq7v3ERqbMUZkVEpFIOHcvnunftQbZNRDBzbh9I09CAEwWGYV8TdskTJ0KsXwMYcIf9EdLUI32LSN2mMCsiIn8pNauACe+s5mBmPq0aB/HpbacE2dQEWPQo7F1qf+3XAAZOhoF3QVC4Z5oWkXpBYVZERE4rM7eI695dzYGMPGLCA/nstoFEhZUG2dwMWPK4fXUCDLD4Qf/bYcg0hVgRcQuFWRERqVBeUQl/++BP9h7JpVlYAJ/eOpBmDQPt82LjP7IH2fyj9uKuV8KIx6BRa4/2LCL1i8KsiIi4VGy1cfcn69lw8BgNg3z58Jb+xIQHQdp2mP93SFpjL4zsBpe8AC0HeLZhEamXFGZFRKQcwzB4+OsElu44QoCvmdmT+hEXEWRfZmvpM2AtAr8QGP4w9L9DS2yJiMfot4+IiJQza8kuvliXhNkEr03oTZ/gDHjvmhOjse1GwqWzIKy5R/sUEVGYFRERJ99vOsTLP+8C4JnLu3FB0S/w1lQozgP/ULhoJvS8HkwmD3cqIqIwKyIiJ0lIyuIfX2wE4M5BkUxIngkbP7UfjD0PLnsDGsZ4sEMREWcKsyIiAsDh7AJu/fBPCoptXBebxwMH74T0nWAyw7CHYchUMFs83aaIiBOzJ798+fLljBkzhmbNmmEymfjmm2/+8j3Lli2jT58+BAQE0KZNG/773//WfKMiInVcYYmV2z9ax+HsQm5stIVnMu7FlL4TGkTDpO9h6HQFWRGplTwaZnNzc+nRowevvfZaper37dvHxRdfzJAhQ4iPj+fhhx9mypQpfPXVVzXcqYhI3fbP77ey8eBRpgXM56n8f2EqyoXWQ2Dyb9B6sKfbExGpkEenGYwePZrRo0dXuv6///0vLVu2ZNasWQB06tSJtWvX8p///Icrr7yyhroUEanbvolP5ovVu3nF9y3Gssq+s99t9gu9LL6ebU5E5C941ZzZVatWMXLkSKd9o0aNYvbs2RQXF+PrW/6XbmFhIYWFhY7X2dnZNd6niIi32HU4h399vZr/+f2bgeZtYPaBi/8DfW/2dGsiIpXi0WkGVZWamkpkZKTTvsjISEpKSkhPT3f5npkzZxIWFuZ4xMToKlwREYDjhSX834cL+dD0OAPN2zD8Q+GGrxVkRcSreFWYBTCdsq6hYRgu95eZMWMGWVlZjsfBgwdrvEcREW/w2uff89Lx6XQ0H8QaHInp5gXQZqin2xIRqRKvmmYQFRVFamqq0760tDR8fHxo3Lixy/f4+/vj7+/vjvZERLzG0uW/cuvuvxNhyiY/tA2Bf/sWGrb0dFsiIlXmVSOzgwYNYvHixU77Fi1aRN++fV3OlxURkfLSdv5Jz19uIMKUzeHgDgRO/llBVkS8lkfD7PHjx9mwYQMbNmwA7EtvbdiwgcTERMA+RWDixImO+smTJ3PgwAGmTp3Ktm3beO+995g9ezb/+Mc/PNG+iIjXsSbFE/TZOBqRw06f9oTf+RMEhXu6LRGRM+bRaQZr165l+PDhjtdTp04FYNKkSXzwwQekpKQ4gi1AbGwsCxYs4P777+f111+nWbNmvPLKK1qWS0SkMlITKP5gDCHGceKN9jT+23x8QxRkRcS7mYyyK6jqiezsbMLCwsjKyiI0NNTT7YiIuEfGHkreHYlPfjprbe05ePFHXD6wo6e7EhFxqSp5zavmzIqIyBnISsL4cCw++elssbXi4zb/ZtyADp7uSkSkWnjVagYiIlJFx4/Ah+MwZSWxxxbNPZZH+fzKQRUuZygi4m00MisiUlcV5cFn4yFjF4eMxtxYNIN7x55DkwZarlBE6g6FWRGRushmg3l3QPI6ckwh3FA0g86dOnNZz2ae7kxEpFppmoGISF308xOwbT5Wkw+3FNxPun9LPru8m6YXiEidozArIlLXrH0ffn8ZgIesd7DG6MTzl3YmMjTAw42JiFQ/TTMQEalL9v8GP0wD4NuGE/miaDADYsO5uk8LDzcmIlIzFGZFROqKrGT44iYwrKTEXMq9qaPwtZh45vKuml4gInWWwqyISF1QUgifT4TcI1ibduG6w9cDJm4/rw1xTRt4ujsRkRqjMCsiUhf8+AAkr4WAhrwV9RT7sg1aNArknuHtPN2ZiEiNUpgVEfF26z+CdR8AJpJHvMoLa4sA+OdlXQn0s3i0NRGRmqYwKyLizdK2w4LpABjDH+GhTZFYbQYXdo5keMemHm5ORKTmKcyKiHir4nz48mYoyYe2I/ilyQ2s2JWOn8XM/13SydPdiYi4hcKsiIi3WvgIpG2F4KYUjXmDpxfsAOBv58bSqnGwh5sTEXEPhVkREW+0dT6snW3fvvy//G9THvvSc4kI8eee8+M825uIiBspzIqIeJvsQzD/7/btwfeSHnUur/y8C4AHRnUgxF83dxSR+kNhVkTEmxiGPcgWHINmveH8R3lx8U5yCkvo1jyMq3SnLxGpZxRmRUS8yfr/we4l4BMAl7/FnsxC5v55EID/u6QTZrPu9CUi9YvCrIiItzh6wH7RF8D5j0KT9vz7px1YbQYXdGrKgDaNPdufiIgHKMyKiHgDmw2+vRuKjkPLQTDwTtYnHuWnLamYTTB9VEdPdygi4hEKsyIi3mDtbNi/AnyDYNwbGCYzzy7YDsCVvVvQIaqBhxsUEfEMhVkRkdouKwmWPGHfvuBJCG/D0h1prNmfib+PmfsvbO/R9kREPElhVkSktlvwgH16QcwA6HcrVpvBcz/ab5Bw0+DWNGsY6OEGRUQ8R2FWRKQ22/Yd7PgBzD5w6Swwm/lu4yF2HM4hNMCHu4bqBgkiUr8pzIqI1FYF2fZRWYDB90JkZ0qsNl4uvUHCHUPbEhbk68EGRUQ8T2FWRKS2+uWfkHMIwtvAedMB+GbDIfal59IoyJdJ57T2bH8iIrWAwqyISG2UvB7WvGPfvvQl8A2k2Gpz3Lb2jqFtddtaEREUZkVEah+bDX58EDCg29XQZhgAX61LIjEzj8bBfkwc1MqjLYqI1BYKsyIitU3C55C0BnyD4cJ/AlBUYuPVX3YDcOewtgT5aVRWRAQUZkVEapfCHFj8mH176HQIjQbg87UHST6WT5MG/twwUKOyIiJlFGZFRGqT5f+G44ftF30NvAuAYquNN3/dA8Bdw9oS4GvxZIciIrWKwqyISG2RvhtWvWHfvuhZ8PEH4Jv4ZJKP5RMR4s+E/i092KCISO2jMCsiUlssegRsxdBuJLQfBYDVZjhGZW8dEqtRWRGRUyjMiojUBvuWw86f7Hf6GvUvx+4fN6ewNz2XsEBfzZUVEXFBYVZExNNsthMXffW5GSLaAWAYBq8vtY/K3nROa60rKyLigsKsiIinbfkaDsWDXwgMfdCx+5ftaWxLySbYz8LNg1t7rj8RkVpMYVZExJNKCuHnJ+3bg++DkCaAfVT2taX2dWVvGNiKhkF+HmpQRKR2U5gVEfGkP9+FY4nQIBoG3e3Y/ce+TOITj+HnY+aWIbEebFBEpHZTmBUR8ZT8Y7Dsefv28IfBL8hx6O3lewG4uk8LmjYI8EBzIiLeQWFWRMRTVr0GBcegSSfoeb1j967DOfyyPQ2TCW4d0sZz/YmIeAGFWRERT8hNh9Vv2rfPfwTMJ9aPfWeFfVR2ZOdIYiOCPdGdiIjXUJgVEfGE32dB0XGI7gEdL3XsTssu4Jv4QwDcfl5bDzUnIuI9FGZFRNwtJxXWvGPfPv9RMJkchz5YuZ8iq40+rRrRp1UjDzUoIuI9FGZFRNxtxQtQUgAxAyDuAsfu3MISPl59AIDbz9NcWRGRylCYFRFxp2OJsPZ9+/b5/+c0Kjv3z4NkF5QQGxHMBZ0iPdSgiIh3UZgVEXGn5f8BWzG0HgKx5zl2W20G76/cB8At58ZiMZsq+gQRETmJwqyIiLscOwgbPrFvn/9/Tod+3naYg5n5NAzy5creLTzQnIiId1KYFRFxl99fBluJfUS25UCnQ+//vh+Aa/u1JNDP4uLNIiLiisKsiIg75KTC+g/t2+dNdzq0LSWbVXszsJhN3DiolQeaExHxXgqzIiLusPJVsBbaVzBoPcTp0Aelo7KjukTSvGGgB5oTEfFeCrMiIjUtNx3WvmffPm+60woGmblFfLMhGYCbB8d6ojsREa+mMCsiUtNWvwHFeRDd02ldWYDP1iRSWGKja/NQ+uomCSIiVaYwKyJSk/KPnbjb1ymjssVWGx+tst8k4eZzYjGZtByXiEhVKcyKiNSkP9+Fwmxo2hk6XOx0aNGWw6RmFxAR4selPaI91KCIiHdTmBURqSnFBfDHW/btwfeC2flX7ker9wMwoX9L/H20HJeIyJlQmBURqSmb5kBuGoS2gK5XOh3adTiH1XszMZvsYVZERM6MwqyISE2w2ezLcQEMvBMsvk6HP15tnyt7QadImmk5LhGRM6YwKyJSE3YsgIzd4B8GfSY5HcotLOHr9fbluHSTBBGRs6MwKyJSE1a+Yn/udwv4N3A69O2GQ+QUlhAbEczgthEeaE5EpO5QmBURqW6Jq+HgH2DxgwF3OB0yDIMPV+0H4PoBLTGbtRyXiMjZUJgVEaluv5eOyva4FhpEOR1an3iU7ak5BPiaubpPjAeaExGpWxRmRUSqU+Ze+3xZgEH3lDtcdpOEsT2aERbkW+64iIhUjcKsiEh1+uNtwIC4C6FJB6dDR3OLWLA5FYDrB+jCLxGR6uDxMPvGG28QGxtLQEAAffr0YcWKFaet/+STT+jRowdBQUFER0dz8803k5GR4aZuRUROoyAb4j+2bw+cXO7w1/HJFJXY6NIslO4twtzcnIhI3eTRMDt37lzuu+8+HnnkEeLj4xkyZAijR48mMTHRZf1vv/3GxIkTueWWW9iyZQtffPEFf/75J7feequbOxcRcSH+YyjKgYgO0HaE0yHDMJizxv677dr+LTGZdOGXiEh18GiYffHFF7nlllu49dZb6dSpE7NmzSImJoY333zTZf3q1atp3bo1U6ZMITY2lnPPPZc77riDtWvXurlzEZFT2KywpvTWtQMnwylhdd2Bo+xKO06gr4XLejbzQIMiInWTx8JsUVER69atY+TIkU77R44cycqVK12+55xzziEpKYkFCxZgGAaHDx/myy+/5JJLLqnwewoLC8nOznZ6iIhUu50/wdH9ENAQul9b7vBnaw4CcGn3aEIDdOGXiEh18ViYTU9Px2q1EhkZ6bQ/MjKS1NRUl+8555xz+OSTTxg/fjx+fn5ERUXRsGFDXn311Qq/Z+bMmYSFhTkeMTFaCkdEasDq0r9R6nMT+AU5HcrKL+aHhEMATBjQ0s2NiYjUbR6/AOzUeWOGYVQ4l2zr1q1MmTKFxx57jHXr1vHTTz+xb98+Jk8uf6FFmRkzZpCVleV4HDx4sFr7FxEhNQH2rwCTBfrfVu7wtxuSKSi20SGyAb1iGrq/PxGROszHU18cERGBxWIpNwqblpZWbrS2zMyZMxk8eDDTp08HoHv37gQHBzNkyBCefvppoqOjy73H398ff3//6v8BRETKrHnH/txpDIS1cDpkGAaf/mG/8GtC/xhd+CUiUs08NjLr5+dHnz59WLx4sdP+xYsXc84557h8T15eHmazc8sWiwWw/4EhIuJ2+ccg4Qv7dv/byx3emJTF9tQc/H3MXN6rRbnjIiJydjw6zWDq1Km8++67vPfee2zbto3777+fxMREx7SBGTNmMHHiREf9mDFj+Prrr3nzzTfZu3cvv//+O1OmTKF///40a6arg0XEAzZ+BsV50KQTtCr/H+Kfr7VPbRrdNUp3/BIRqQEem2YAMH78eDIyMnjqqadISUmha9euLFiwgFat7HfGSUlJcVpz9qabbiInJ4fXXnuNadOm0bBhQ84//3yee+45T/0IIlKfGQb8+a59u/+t5Zbjyi+y8t0G+4Vf1/TTxaciIjXBZNSzv5/Pzs4mLCyMrKwsQkNDPd2OiHizPUvho3Hg1wCmbQP/Bk6H58Uncf/cjcSEB7LsH8MxmzVfVkSkMqqS1zy+moGIiNcqG5XtcW25IAvwxdokAK7uE6MgKyJSQxRmRUTORFYS7Fhg3+5X/pbaBzPzWLknA5MJruyjC79ERGqKwqyIyJlY9wEYNmg9BJp2LHf4i3X2Udlz4yJo3jDQzc2JiNQfCrMiIlVlLYZ1/7Nv97ul3GGbzeCr0jB7dV9d+CUiUpMUZkVEqmrHj5CbBsFNoeOl5Q6v3JNB8rF8QgN8GNnZ9U1gRESkeijMiohU1boP7M+9bgBL+bVjy9aWHderOQG+Fjc2JiJS/yjMiohUxdH9sOcX+3bvieUOZxcUs3CL/TbdV+nCLxGRGqcwKyJSFes/AgxoMxzCY8sd/ikhlcISG3FNQ+jWPMz9/YmI1DMKsyIilWUthviP7dt9bnJZ8nW8/cKvK3o3x2TS2rIiIjVNYVZEpLJ2LoTjqaUXfl1S7nDS0TxW783EZIJxPZt7oEERkfpHYVZEpLIcF35d7/LCr283HAJgYGxjmmltWRERt1CYFRGpjKMHYPcS+7aLC78Mw+Dr9fYpBpf31qisiIi7KMyKiFTGhk8AA2KHQnibcocTkrPYcyQXfx8zo7tGub8/EZF6SmFWROSv2KwQ/4l928WoLMDX65MBGNkligYB5acgiIhIzVCYFRH5K/uWQXYSBDR0ecevYquN7zba58te0UtTDERE3ElhVkTkr6z/yP7c/RrwDSh3eMWuI2TkFhER4seQdhFubk5EpH5TmBUROZ28TNj+vX271w0uS8qmGIzt0Rwfi36tioi4k37rioicTsKXYC2CqG4Q3aPc4eyCYhZtPQzYb5QgIiLudVZhtrCwsLr6EBGpneJLpxj0utHl4R8TUigqsdGuaQhdmoW6sTEREYEqhtmFCxdy00030bZtW3x9fQkKCqJBgwYMHTqUZ555hkOHDtVUnyIi7peyEVI3gcUPul3tsqRsisHlun2tiIhHVCrMfvPNN3To0IFJkyZhNpuZPn06X3/9NQsXLmT27NkMHTqUJUuW0KZNGyZPnsyRI0dqum8RkZoX/7H9ueOlEBRe7nDS0Tz+2Kfb14qIeJJPZYr+9a9/8Z///IdLLrkEs7l8/r3mmmsASE5O5uWXX+bDDz9k2rRp1dupiIg7lRRCwhf27V7XuyzR7WtFRDyvUmF2zZo1lfqw5s2b8/zzz59VQyIitcKuRZB/FBo0gzbDyx0++fa1uvBLRMRzqnwB2PLly0lLSyu3v7i4mOXLl1dLUyIiHrdxjv25+9VgtpQ7vCnJfvvaAF8zo7tFu7k5EREpU+UwO2zYMHr06MGqVauc9mdmZjJ8ePnRCxERr5OXCTsX2re7X+uyZF586e1rO0cR4l+pv+QSEZEacEZLc1177bWMGDGCDz74wGm/YRjV0ZOIiGdt/gpsxfZ1ZSM7lztcctLtay/XFAMREY+qcpg1mUzMmDGDjz/+mL///e9MnTrVEWK1LI2I1AmOKQauR2VX7skgI7eI8GA/zo3T7WtFRDypymG2LLheccUVLF++nC+//JLRo0dz7Nix6u5NRMT90ndB8lowWaDbVS5L5peOyl7cLQpf3b5WRMSjzuq3cK9evVizZg3Hjh1jxIgR1dWTiIjnbJprf44bASFNyx0uLLGycHMqAGN7aIqBiIinVTnMTpo0icDAE+spRkVFsWzZMkaMGEHLli2rtTkREbey2WBjaZjt4XqKwa87jpBTWEJ0WAB9WzVyY3MiIuJKlS/Bff/998vt8/f353//+1+1NCQi4jGJKyErEfxDocPFLkvKLvy6tHs0ZrOuExAR8bRKh9lNmzZVqq579+5n3IyIiEeVXfjV+TLwLX9Hr9zCEpZsOwzAmB7N3NmZiIhUoNJhtmfPnphMpnIrFxiG4dhvMpmwWq0106mISE0qzoct39i3e0xwWbJk22EKim20bhxEt+Zh7utNREQqVOkwu2/fPse2YRh07dqVBQsW0KpVqxppTETErbb/AEU50LAltBzksqRsisHYHs20FKGISC1R6TB7amg1mUy0aNFCYVZE6oayVQy6jwdz+Wtjj+UVsWznEUBTDEREahMtkCgiknMYdv9s367gRgk/bU6l2GrQMaoB7SIbuLE5ERE5HYVZEZHNX4JhheZ9ISLOZcl3m+xTDDQqKyJSu5xVmNWcMRGpE8pWMahgbdm0nAJW7ckA7PNlRUSk9qj0nNlevXo5hdf8/HzGjBmDn5+fU9369eurrzsRkZp2eCukbgKzL3S90mXJD5tSsBnQq2VDYsKD3NygiIicTqXD7GWXXeYUZi+77LIaaUhExK02lY7Kth8FQeEuS8pWMRjTXaOyIiK1TaXD7D/+8Q9CQkJqshcREfeyWWHT5/btCqYYHMzMY33iMUwm+12/RESkdqn0nNmIiAhGjx7Nm2++yaFDh2qyJxER9zjwO+SkQEAYtBvpsqTswq+BsY1pGhrgzu5ERKQSKh1md+zYwcUXX8xXX31FbGws/fr145///Gelb3MrIlLrJHxpf+40Fnz8XZZ8tzEFgLE9NcVARKQ2qnSYbdWqFX//+99ZsmQJaWlpTJ06lS1btnDeeecRGxvLvffeyy+//KLb2YqIdygpgq3f2re7Xe2yZHdaDttSsvExmxjdNcqNzYmISGWd0dJcYWFhTJgwgTlz5pCens5bb72FzWbj5ptvpkmTJnzyySfV3aeISPXa8wsUHIOQKGh9rsuS+aWjsue1b0LDID+XNSIi4lmVvgCswg/w8WHkyJGMHDmSV199lfj4eEpKSqqjNxGRmpPwhf25y+VgtpQ7bBgG35euYqC1ZUVEaq8qj8z+9NNP/Pbbb47Xr7/+Oj179uS6667j6NGj9OrVi379+lVrkyIi1aooF3YssG9XMMVgW0oOe9Nz8fMxc0HnSDc2JyIiVVHlMDt9+nSys7MBSEhIYNq0aVx88cXs3buXqVOnVnuDIiLVbsePUJwHjWKheW+XJT8k2Edlh3doQoj/Wf8lloiI1JAq/4bet28fnTt3BuCrr77i0ksv5V//+hfr16/n4osvrvYGRUSq3eav7M9drwQXt+U2DIMFCakAXNxNa8uKiNRmVR6Z9fPzIy8vD4AlS5YwcqR9bcbw8HDHiK2ISK2Vlwm7Ftu3u13lsmRbSg77SqcYjOikKQYiIrVZlUdmzz33XKZOncrgwYNZs2YNc+fOBWDnzp20aNGi2hsUEalW274DWzFEdoWmnVyWaIqBiIj3qPLI7GuvvYaPjw9ffvklb775Js2bNwfgxx9/5KKLLqr2BkVEqtXm0hsldL3S5WFNMRAR8S5VHnJo2bIl33//fbn9L730UrU0JCJSY7JTYN8K+3YFYVZTDEREvMsZ/f2Z1Wpl3rx5bNu2DZPJRMeOHRk3bhw+PvrrOBGpxbbMAwyIGQCNWrksWZBgv1HCsPaaYiAi4g2q/Jt68+bNjB07lsOHD9OhQwfAPl+2SZMmzJ8/n27dulV7kyIi1cIxxcD1hV+GYfBDaZi9pLumGIiIeIMqz5m99dZb6dq1K0lJSaxfv57169dz8OBBunfvzu23314TPYqInL3MvZC8Dkxm6DLOZYmmGIiIeJ8qj8xu3LiRtWvX0qhRI8e+Ro0a8cwzz+jOXyJSeyWUri0bOxRCmros0RQDERHvU+WR2Q4dOnD48OFy+9PS0oiLi6uWpkREqpVhnJhiUMHtazXFQETEO1U5zP7rX/9iypQpfPnllyQlJZGUlMSXX37Jfffdx3PPPUd2drbjISJSKxzeAke2g8UfOl3qskRTDEREvFOV/x7t0kvtfxBcc801mEpvA2kYBgBjxoxxvDaZTFit1urqU0TkzJWNyra7EALCXJZoioGIiHeq8m/spUuX1kQfIiI1wzBOzJc9zRSDBZpiICLilaocZocOHVoTfYiI1IyktZCVCH4h0H6Uy5JtKTns1RQDERGvdEZ/l3b06FFmz57tuGlCp06duPnmmwkPD6/u/kREzs6WefbnDqPBN9BliaYYiIh4rypfALZs2TJat27NK6+8wtGjR8nMzOSVV14hNjaWZcuWVbmBN954g9jYWAICAujTpw8rVqw4bX1hYSGPPPIIrVq1wt/fn7Zt2/Lee+9V+XtFpB6w2U6E2S5XuCzRFAMREe9W5SGIu+++m/Hjx/Pmm29isVgA++1t77rrLu6++242b95c6c+aO3cu9913H2+88QaDBw/mrbfeYvTo0WzdupWWLVu6fM8111zD4cOHmT17NnFxcaSlpVFSUlLVH0NE6oOkNZBzCPxDIW6Ey5LtqZpiICLizaocZvfs2cNXX33lCLIAFouFqVOn8uGHH1bps1588UVuueUWbr31VgBmzZrFwoULefPNN5k5c2a5+p9++olly5axd+9ex5SG1q1bV/VHEJH6YvPX9ueOl4CPv8uSHzZpioGIiDer8jSD3r17s23btnL7t23bRs+ePSv9OUVFRaxbt46RI0c67R85ciQrV650+Z758+fTt29fnn/+eZo3b0779u35xz/+QX5+foXfU1hY6LT2rda/FaknbFbY+q19u8vlLks0xUBExPtVahhi06ZNju0pU6Zw7733snv3bgYOHAjA6tWref3113n22Wcr/cXp6elYrVYiI53/Wi8yMpLU1FSX79m7dy+//fYbAQEBzJs3j/T0dO666y4yMzMrnDc7c+ZMnnzyyUr3JSJ1ROIqOJ5qX1e2zXCXJZpiICLi/SoVZnv27InJZHLcHAHggQceKFd33XXXMX78+Co1UHbjhTJlN1xwxWazYTKZ+OSTTwgLsy98/uKLL3LVVVfx+uuvExhY/krlGTNmMHXqVMfr7OxsYmJiqtSjiHihsgu/Oo4BHz+XJZpiICLi/Sr123vfvn3V/sURERFYLJZyo7BpaWnlRmvLREdH07x5c0eQBejUqROGYZCUlES7du3Kvcff3x9/f9dz5USkjrKWnJhi0FVTDERE6rJKhdlWrVpV+xf7+fnRp08fFi9ezOWXn/jDZvHixVx22WUu3zN48GC++OILjh8/TkhICAA7d+7EbDbTokWLau9RRLzUgd8h9wgEhkOs6xu9aIqBiEjdUKkLwFatWlXpD8zNzWXLli2Vqp06dSrvvvsu7733Htu2beP+++8nMTGRyZMnA/YpAhMnTnTUX3fddTRu3Jibb76ZrVu3snz5cqZPn87f/vY3l1MMRKSe2lK6ikGnMWDxdVlSNio7VFMMRES8WqXC7MSJE7nwwgv5/PPPOX78uMuarVu38vDDDxMXF8f69esr9eXjx49n1qxZPPXUU/Ts2ZPly5ezYMECx0hwSkoKiYmJjvqQkBAWL17MsWPH6Nu3L9dffz1jxozhlVdeqdT3iUg9YC2BrfPt26dZxaBsvuylmmIgIuLVTMbJV3VVoLi4mLfeeovXXnuNPXv20L59e5o1a0ZAQABHjx5l+/bt5ObmcsUVVzBjxgy6du3qjt7PSHZ2NmFhYWRlZREaGurpdkSkuu3+GT6+AoIiYNoOsJQfdd2Wks3ol1fg52Nm/aMXamRWRKSWqUpeq9RvcF9fX+655x7uuece1q9fz4oVK9i/fz/5+fn06NGD+++/n+HDhztuZCAi4jFlqxh0HusyyIKmGIiI1CVV/i3eu3dvevfuXRO9iIicnZIi2PadfbvLFS5LNMVARKRuqfIdwEREaq19y6DgGIREQqtzXJZoFQMRkbpFYVZE6o7NpasYdL4MzBaXJZpiICJStyjMikjdUFII23+wb59uFYOyGyV00xQDEZG6QGFWROqGPb9AYRY0iIaYgS5LtqfmsPdI2RSDpm5uUEREasJZhdmCgoLq6kNE5Ow4phiMA7PrX20nTzFoEOD6ZgoiIuJdqhxmbTYb//znP2nevDkhISHs3bsXgEcffZTZs2dXe4MiIn+pOB92LLBvdz3NKgaaYiAiUudUOcw+/fTTfPDBBzz//PP4+fk59nfr1o133323WpsTEamU3Uug6DiEtoDmfV2W7DisKQYiInVRlcPshx9+yNtvv83111+PxXLiauHu3buzffv2am1ORKRSym6U0GVchVMMytaW1RQDEZG6pcphNjk5mbi4uHL7bTYbxcXF1dKUiEilFeXBjp/s26e7UYKmGIiI1ElVDrNdunRhxYoV5fZ/8cUX9OrVq1qaEhGptF2LoDgXGraE5q7vTqgpBiIidVeVVwx//PHHufHGG0lOTsZms/H111+zY8cOPvzwQ77//vua6FFEpGJbSlcx6HI5mEwuSzTFQESk7qryyOyYMWOYO3cuCxYswGQy8dhjj7Ft2za+++47LrzwwproUUTEtcLjsHORfVtTDERE6qUzupfjqFGjGDVqVHX3IiJSNTt/gpJ8aBQL0T1clmiKgYhI3Vblkdk2bdqQkZFRbv+xY8do06ZNtTQlIlIpZasYdL1CUwxEROqpKofZ/fv3Y7Vay+0vLCwkOTm5WpoSEflLBdmwa7F9u8vlLks0xUBEpO6r9DSD+fPnO7YXLlxIWFiY47XVauXnn3+mdevW1dqciEiFdv4E1kJo3A4iu7os2Z6qKQYiInVdpcPsuHHjADCZTEyaNMnpmK+vL61bt+aFF16o1uZERCq0+a9XMVhQOio7TFMMRETqrEqHWZvNBkBsbCx//vknERERNdaUiMhp5R+z38IW7PNlXTAMwzFf9pLummIgIlJXVXk1g3379tVEHyIilbdjAdiKoUknaNrJZcm2lBz2ppdNMYh0c4MiIuIuZ7Q0V25uLsuWLSMxMZGioiKnY1OmTKmWxkREKnTyFIMKnDzFIMT/jH7ViYiIF6jyb/j4+Hguvvhi8vLyyM3NJTw8nPT0dIKCgmjatKnCrIjUrLxM2LvUvn26KQYJmmIgIlIfVHlprvvvv58xY8aQmZlJYGAgq1ev5sCBA/Tp04f//Oc/NdGjiMgJ274DWwlEdoOIdq5LUnLYpykGIiL1QpXD7IYNG5g2bRoWiwWLxUJhYSExMTE8//zzPPzwwzXRo4jICY4bJVQ8xeCHhEMADO+gKQYiInVdlcOsr68vptJlcCIjI0lMTAQgLCzMsS0iUiNy02Hfcvv2aW6UsCAhFYBLujdzV2ciIuIhVR6y6NWrF2vXrqV9+/YMHz6cxx57jPT0dD766CO6detWEz2KiNht/RYMK0T3hHDXt8/empLNvvRc/H3MjOioGyWIiNR1VR6Z/de//kV0tP2Cin/+8580btyYO++8k7S0NN5+++1qb1BExMExxcD1hV+AY23Z4R2aEqwpBiIidV6VftMbhkGTJk3o0qULAE2aNGHBggU10piIiJOcw3Dgd/t253EuS+xTDOxh9mKtYiAiUi9UaWTWMAzatWtHUlJSTfUjIuLa1m/BsEHzvtColcuSLYey2Z+RpykGIiL1SJXCrNlspl27dmRkZNRUPyIirm0pvVHCaaYYlI3KaoqBiEj9UeU5s88//zzTp09n8+bNNdGPiEh52YcgcZV9+zRTDHSjBBGR+qfKQxc33HADeXl59OjRAz8/PwIDA52OZ2ZmVltzIiIAbPnG/hwzEMKauy45lM2B0ikG52uKgYhIvVHlMDtr1qwaaENE5DQqMcWgbFT2/I6aYiAiUp9U+Tf+pEmTaqIPERHXjiVC0p+ACTpf5rLEMAzHklyaYiAiUr9Uec6siIhblU0xaH0uNIhyXXIom8TMPAJ8NcVARKS+UZgVkdqtbIpBl3EVlny/6cQUgyA/TTEQEalPFGZFpPbK3AuH4sFkhk4VTzFw3Cihm6YYiIjUNwqzIlJ7lU0xiD0PQpq4LNmcrCkGIiL1mcKsiNRejikGl1dYcvIqBppiICJS/1T5N39BQQGvvvoqS5cuJS0tDZvN5nR8/fr11daciNRj6bshNQHMPtBprMsS+40SDgFwSbdm7uxORERqiSqH2b/97W8sXryYq666iv79+2MymWqiLxGp78pGZdsMg6BwlyWbk7M5mJlPoK+F4R1dT0MQEZG6rcph9ocffmDBggUMHjy4JvoREbHbMs/+3KXiGyV8XzoqqykGIiL1V5XnzDZv3pwGDRrURC8iInZp2yFtK5h9oePFLkt0owQREYEzCLMvvPACDz74IAcOHKiJfkRETkwxiBsBgY1cliQkZ5F0tHSKQQetYiAiUl9V+e/l+vbtS0FBAW3atCEoKAhfX1+n45mZmdXWnIjUQ4ZRqSkGZaOy53dqSqCfxR2diYhILVTlMDthwgSSk5P517/+RWRkpC4AE5HqdXgLpO8Eiz90GO2yxGYz+G6jfb7spbpRgohIvVblMLty5UpWrVpFjx49aqIfEanvyqYYtLsQAkJdlqxLPMqhrAJC/H0YrhsliIjUa1WeM9uxY0fy8/NrohcRqe8MAzb/9Y0S5m+wj8qO7BJJgK+mGIiI1GdVDrPPPvss06ZN49dffyUjI4Ps7Gynh4jIGUvZAEf3gU8gtL/IZUmJ1caC0rt+je2hGyWIiNR3VZ5mcNFF9j9gRowY4bTfMAxMJhNWq7V6OhOR+ifhS/tzh9HgH+KyZOWeDDJyiwgP9mNwXIQbmxMRkdqoymF26dKlNdGHiNR3Nits/sq+3e3qCsvml174dXG3KHwtVf7LJRERqWOqHGaHDh1aE32ISH134HfISYGAhhB3gcuSgmIrCzenAjC2R3M3NiciIrVVlcPs8uXLT3v8vPPOO+NmRKQeS/jC/tx5LPj4uSz5dccRcgpLiA4LoG8r1zdTEBGR+qXKYXbYsGHl9p281qzmzIpIlZUUwtb59u3TTDFwrC3bPRqzWWtci4jIGaxmcPToUadHWloaP/30E/369WPRokU10aOI1HW7f4aCY9AgGloNdllyvLCEn7cfBjTFQERETqjyyGxYWFi5fRdeeCH+/v7cf//9rFu3rloaE5F6pGyKQdcrwex63dglWw9TUGwjNiKYrs1d30xBRETqn2q7FLhJkybs2LGjuj5OROqLwhzY8aN9u9tVFZaVrWIwpkcz3UZbREQcqjwyu2nTJqfXhmGQkpLCs88+q1vcikjVbV8AJfnQOA6ie7osOZpbxPKdRwDdKEFERJxVOcz27NkTk8mEYRhO+wcOHMh7771XbY2JSD1RNsWg29VQwYjrj5tTKbEZdI4OJa6p65spiIhI/VTlMLtv3z6n12azmSZNmhAQEFBtTYlIPZGbDnt+sW93Pd0Ug2TAPsVARETkZFUOs61ataqJPkSkPtoyDwwrNOsFEXEuSw5nF/DHvkwAxvSIdmd3IiLiBSp9Adgff/zBjz/+6LTvww8/JDY2lqZNm3L77bdTWFhY7Q2KSB1WidvXfr8pBcOAPq0a0aJRkJsaExERb1HpMPvEE084XfyVkJDALbfcwgUXXMBDDz3Ed999x8yZM6vcwBtvvEFsbCwBAQH06dOHFStWVOp9v//+Oz4+PvTs2bPK3ykitcCxREhcBZigyxUVlpWtYqALv0RExJVKh9kNGzYwYsQIx+s5c+YwYMAA3nnnHaZOncorr7zC559/XqUvnzt3Lvfddx+PPPII8fHxDBkyhNGjR5OYmHja92VlZTFx4kSnfkTEy5SNyrY+F0JdTx84kJHLxoPHMJvg4m6aYiAiIuVVOswePXqUyMhIx+tly5Zx0UUXOV7369ePgwcPVunLX3zxRW655RZuvfVWOnXqxKxZs4iJieHNN9887fvuuOMOrrvuOgYNGlSl7xORWiThS/tzJW5fOzgugiYN/N3RlYiIeJlKh9nIyEjHSgZFRUWsX7/eKUzm5OTg6+tb6S8uKipi3bp1jBw50mn/yJEjWblyZYXve//999mzZw+PP/54pb9LRGqZw1vh8GYw+0LnsS5LDMNgXrxWMRARkdOr9GoGF110EQ899BDPPfcc33zzDUFBQQwZMsRxfNOmTbRt27bSX5yeno7VanUa7QV7aE5NTXX5nl27dvHQQw+xYsUKfHwq13phYaHThWnZ2dmV7lFEasjm0lHZdiMhsJHLkk1JWew5kkuAr5nRXaPc2JyIiHiTSo/MPv3001gsFoYOHco777zDO++8g5+fn+P4e++9V26UtTJOvS2lYRgub1VptVq57rrrePLJJ2nfvn2lP3/mzJmEhYU5HjExMVXuUUSqkWGcNMWg4rVly0ZlR3aOokFA5f/WR0RE6pdKj8w2adKEFStWkJWVRUhICBaLxen4F198QUhI5e/MExERgcViKTcKm5aWVm60FuzTGNauXUt8fDz33HMPADabDcMw8PHxYdGiRZx//vnl3jdjxgymTp3qeJ2dna1AK+JJB9fAsQPgFwLtL3JZUmy1OVYxuKJ3c3d2JyIiXqbKN00ICwtzuT88PLxKn+Pn50efPn1YvHgxl19+uWP/4sWLueyyy8rVh4aGkpCQ4LTvjTfe4JdffuHLL78kNjbW5ff4+/vj768LR0RqjY2f2p87jQU/1+vGLttxhMzcIpo08OfcuAg3NiciIt6mymG2Ok2dOpUbb7yRvn37MmjQIN5++20SExOZPHkyYB9VTU5O5sMPP8RsNtO1a1en9zdt2pSAgIBy+0WkliougM3z7Ns9J1RY9nV8EgCX9WiGj6XSs6FERKQe8miYHT9+PBkZGTz11FOkpKTQtWtXFixY4LhlbkpKyl+uOSsiXmTHAijMgrAYaHWuy5KsvGKWbE0D4IreLdzZnYiIeCGTYRiGp5twp+zsbMLCwsjKyiI0NNTT7YjUL59cDbsWwZB/wIhHXZZ8+kciD89LoGNUA3667zw3NygiIrVBVfKa/v5ORNwj5zDs/tm+3eM0UwzW26cY6MIvERGpDIVZEXGPhC/AsEKLfhAR57LkQEYuaw8cxWyCy3oqzIqIyF9TmBUR99j4mf35NKOyZWvLDo6LIDI0wB1diYiIl1OYFZGal5pgv32txQ+6XuGy5OTb116pC79ERKSSFGZFpOZtKB2V7TC6wtvXrk88yoGMPIL8LIzsUv7GKSIiIq4ozIpIzbIWQ8Ln9u0e11VY9tV6+6js6K7RBPl5dNVAERHxIgqzIlKz9vwCuUcguAnEjXBZUlhi5fvS29deqVUMRESkChRmRaRmbSi9fW23q8Hi67Lkl21pZBeUEB0WwMA2jd3YnIiIeDuFWRGpOflHYceP9u3TrGJQNsVgXK/mmM0md3QmIiJ1hMKsiNScLfPAWgiRXSG6u8uSzNwift1RevvaXppiICIiVaMwKyI1p2wVgx7XVljy3cZDlNgMujUPo11kAzc1JiIidYXCrIjUjIw9kLQGTBbodk2FZV+us9++9nKNyoqIyBlQmBWRmlF2x6+4EdDA9bqxWw9lk5Ccha/FxDiFWREROQMKsyJS/Ww22DjHvn2aKQafrz0IwIWdIwkP9nNHZyIiUscozIpI9du/ArIOgn8YdLjYZUlhiZVvNthXMbimb4w7uxMRkTpEYVZEql/8R/bnbleCb6DLksVbD3Msr5josACGtGvixuZERKQuUZgVkeqVlwlb59u3e0+ssGzun/YpBlf1aYFFa8uKiMgZUpgVkeqV8EXp2rLdILqny5LkY/n8tjsdsIdZERGRM6UwKyLVxzBg/Yf27d4TweR6xPXLtUkYBgxsE06rxsFubFBEROoahVkRqT6H4uHwZrD4Q/erXZbYbAZfrLNPMRjfTxd+iYjI2VGYFZHqUzYq23ksBDZyWbJyTwZJR/Np4O/DRV2i3diciIjURQqzIlI9inJh81f27dNc+PXZmkQAxvVqTqCfxR2diYhIHaYwKyLVY+u3UJgNjVpDq3NdlhzJKWThllQAJvRv6cbmRESkrlKYFZHqse5/9udeN4LZ9a+WL9clUWIz6BnTkM7NQt3YnIiI1FUKsyJy9g5vhYOrwWSBnte7LLHZDOb8aZ9icN0AjcqKiEj1UJgVkbO37n37c8eLIdT1RV0r92RwICOPBv4+XNpdF36JiEj1UJgVkbNTlAsb59i3+/6twrKyC78u792cID8fd3QmIiL1gMKsiJydzV+fuPArdpjLEl34JSIiNUVhVkTOztr37M99bv7LC796tWxIp2hd+CUiItVHYVZEztyheDi0Hsy+0OsGlyVWm8Gnaw4AGpUVEZHqpzArImdubemFX50vg+AIlyXLdqZxMDOfsEBfxnRv5sbmRESkPlCYFZEzU5ANCV/at/veXGHZh6vso7LX9G2hO36JiEi1U5gVkTOzcQ4U50JEe2g12GXJgYxclu08gskENwxs5eYGRUSkPlCYFZGqMwxY87Z9u99tYDK5LPt49QEMA4a2b0KrxsFubFBEROoLhVkRqbq9v0LGLvBrAD0nuCzJL7Ly+dokACYO0qisiIjUDIVZEam6slHZnhPAv4HLku82HiIrv5iY8ECGtm/qxuZERKQ+UZgVkao5egB2/Gjf7nebyxLDMPhw9X4AbhjQCovZ9TQEERGRs6UwKyJV8+e7gAFthkOT9i5L1iceY3NyNv4+Zq7pG+Pe/kREpF5RmBWRyivKg/Uf2rcH3FFh2Xu/7wNgbI9mNAr2c0dnIiJSTynMikjlbf4SCo5Bw5bQbqTLkuRj+fy0ORWAW4bEurE5ERGpjxRmRaRyDAP+OGk5LrPrGyB8uHI/VpvB4LjGdIwKdWODIiJSHynMikjl7FsOhxPANwh63+iyJLewhM/WJALwt8EalRURkZqnMCsilbPqdftzrxsgsJHLkq/WJ5FdUEJsRDDDO2g5LhERqXkKsyLy147sgF0LARMMmOyyxGYzeP/3/QDcPLg1Zi3HJSIibqAwKyJ/bfUb9ueOl0Djti5Lft2Zxr70XBoE+HBl7xZubE5EROozhVkROb3cdNg4x7496O4Ky95dYV+Oa0L/lgT7+7ijMxEREYVZEfkLa9+DkgJo1gtaDnJZsinpGCv3ZOBjNjHpnNbu7U9EROo1hVkRqVhxAawpXY5r0D1gcj0P9q1lewH7TRKaNwx0V3ciIiIKsyJyGgmfQ+4RCG0OnS9zWbI/PZcfN6cAcPvQNu7sTkRERGFWRCpgs8LvL9u3B94JFl+XZe+s2IvNgOEdmugmCSIi4nYKsyLi2vbvIWM3BDSEPje5LDmSU8gX65IAuGOo61UOREREapLCrIiUZxiw4kX7dv/bwb+By7IPV+2nqMRGj5iGDIgNd2ODIiIidgqzIlLe3l8hZQP4BFZ4k4TcwhI+XHUAgDuHtsFUwcVhIiIiNUlhVkTK++0l+3OfSRDc2GXJJ38cICu/mNiIYC7sHOXG5kRERE5QmBURZ8nrYN8yMPtUeJOE/CIrby+3L8d157C2WHTrWhER8RCFWRFxVjYq2+1qaNjSZclnaxJJP15Ei0aBXN6ruRubExERcaYwKyInHN4C274DTDD4PpclBcVW3lq+B7CPyvpa9GtEREQ8R38KicgJy56zP3cZB007uiz5Yl0Sh7MLiQ4L4Ko+LdzXm4iIiAsKsyJid3grbP3Wvn3eAy5LikpsvLl0NwCTh7bF38firu5ERERcUpgVEbuyUdnO4yCys8uSr9cncSirgCYN/BnfL8Z9vYmIiFRAYVZEIG3biVHZoRWPyr5WOip7x3ltCPDVqKyIiHiewqyIwLLnAQM6XwaRXVyWzF17kKSj+TRp4M/1A1q5tz8REZEKKMyK1Hdp22DLPPv20AddlhQUW3ntl10A3DM8jkA/jcqKiEjtoDArUt/98jRgQKexFY7KfrTqAIezC2neMJBr+2uurIiI1B4eD7NvvPEGsbGxBAQE0KdPH1asWFFh7ddff82FF15IkyZNCA0NZdCgQSxcuNCN3YrUMUlrYfv3YDLD+f/nsuR4YQlvLrOvK3vviHZawUBERGoVj4bZuXPnct999/HII48QHx/PkCFDGD16NImJiS7rly9fzoUXXsiCBQtYt24dw4cPZ8yYMcTHx7u5c5E6wDBgyRP27R7XQZMOLsve+20fmblFtIkI5oreutuXiIjULibDMAxPffmAAQPo3bs3b775pmNfp06dGDduHDNnzqzUZ3Tp0oXx48fz2GOPVao+OzubsLAwsrKyCA0NPaO+ReqEPb/AR5eDxQ/+vh4alp8+cCyviCHPLSWnsIRXJvRibI9mHmhURETqm6rkNY+NzBYVFbFu3TpGjhzptH/kyJGsXLmyUp9hs9nIyckhPDy8wprCwkKys7OdHiL1nmHAkift2/1udRlkAV5fupucwhI6RjXg0m7RbmxQRESkcjwWZtPT07FarURGRjrtj4yMJDU1tVKf8cILL5Cbm8s111xTYc3MmTMJCwtzPGJidPGKCFu/hZQN4BcCQ6a5LEnMyON/Kw8A8NDojpjNJjc2KCIiUjkevwDMZHL+A9IwjHL7XPnss8944oknmDt3Lk2bNq2wbsaMGWRlZTkeBw8ePOueRbyatRh++ad9e9A9EBzhsuz5hdspstoY0i6Coe2buLFBERGRyvPx1BdHRERgsVjKjcKmpaWVG6091dy5c7nlllv44osvuOCCC05b6+/vj7+//1n3K1Jn/PkuZOyG4CYw6G6XJesTj/L9phRMJpgxulOl/gNTRETEEzw2Muvn50efPn1YvHix0/7FixdzzjnnVPi+zz77jJtuuolPP/2USy65pKbbFKlb8jLh12ft28MfgYDyk+oNw+BfP2wD4KreLejcTBdKiohI7eWxkVmAqVOncuONN9K3b18GDRrE22+/TWJiIpMnTwbsUwSSk5P58MMPAXuQnThxIi+//DIDBw50jOoGBgYSFhbmsZ9DxGssew4KjkHTLtB7osuShVtSWXvgKAG+ZqaNdL1cl4iISG3h0TA7fvx4MjIyeOqpp0hJSaFr164sWLCAVq3s931PSUlxWnP2rbfeoqSkhLvvvpu77z7x16OTJk3igw8+cHf7It4lfZd9igHAqGfAXP7mBwXFVmb+uB2A24e0ISoswJ0dioiIVJlH15n1BK0zK/XWp9fCzh+h/UVw3VyXJa/9sov/LNpJZKg/P08bRoi/R/97V0RE6imvWGdWRNxoz1J7kDX7wMinXZYkH8vntaW7AXj44k4KsiIi4hUUZkXqupJCWDDdvt3vNoho57LsmR+2UlBso39suO70JSIiXkNhVqSuW/UaZOyC4KYwfIbLkt93p7MgIRWzCZ4c20VLcYmIiNdQmBWpy44egGX/tm+PegYCyq/6UWy18fj8LQBMHNSaTtGaSy4iIt5DYVakLvtpBpTkQ+sh0O1qlyXvrtjH7rTjNA724/4L27u5QRERkbOjMCtSV+1cCDt+sF/0dfF/wMXUgf3pucxashOAh0Z3JCzQ191dioiInBWFWZG6qCj3xEVfA++Cph3LlRiGwSPfJFBYYmNwXGOu6tPCzU2KiIicPYVZkbro53/CsQMQFgNDH3RZ8uW6JH7fnYG/j5lnxnXTRV8iIuKVFGZF6prEP+CP/9q3x7wM/iHlStKPF/LMgm0A3HdBe1pHBLuzQxERkWqjMCtSlxQXwPx7AAN6Xg9xI1yWPfXdVo7lFdMpOpRbh8S6t0cREZFqpDArUpcsfx7Sd0JIpH0pLhcWJKQwf+MhzCZ47spu+Fr0a0BERLyX/hQTqStSNsJvs+zbl7wAgY3KlaTlFPDIvAQA7hoWR/cWDd3Xn4iISA1QmBWpC4rz4avbwLBC53HQaUy5EsMwmPFVAkfziukcHcqUEa5vaysiIuJNFGZF6oLFj0P6Dvv0gktedFny+dqD/Lw9DT+LmZfG98TPR//6i4iI99OfZiLebtcSWPOWfXvcGxDcuFzJwcw8nvpuKwD/GNWeDlEN3NmhiIhIjVGYFfFmuenw7V327QGTIe6CciVFJTbu+Sye3CIr/VuHc8u5bdzcpIiISM1RmBXxVoYB86fA8cPQpCNc8ITLsn8v3M7Gg8cIC/TlxfE9sJh1cwQREak7FGZFvNXqN2HHD2D2hSveAd/AciU/bzvMOyv2AfDvq7rTolGQu7sUERGpUQqzIt4o8Q9Y/Kh9+6KZEN29XElKVj7TvtgIwE3ntGZklyh3digiIuIWCrMi3iY3Hb68GWwl0PVK6HdruZKiEht//zSeY3nFdG0eyoyLO3qgURERkZqnMCviTWxW+Po2yE6Gxu1gzMtgKj8H9p/fb2XtgaM08PfhtQm98fexeKBZERGRmqcwK+JNfp0Je34Bn0C45kPwL7/E1pw1iXy0+gAmE8y6tietI4I90KiIiIh7KMyKeIvNX8Hyf9u3x8yCyM7lStYnHuWxb7cAMPWC9ozoFOnGBkVERNxPYVbEGySvh29K15M95+/Q49pyJYezC5j80TqKrDZGdYnk7uFxbm5SRETE/RRmRWq77BSYcx2UFEC7kXDBk+VKcgtL+NsHf5KWU0i7piG8cE1PzFpPVkRE6gGFWZHarCgX5kyAnBT7jRGunA1m54u5Sqw27v50PVsOZdM42I93J/UlxN/HQw2LiIi4l8KsSG1lLYbPJ8GheAhsBBM+g4BQpxLDMHj02y38uuMIAb5m3p3Ul1aNdcGXiIjUHwqzIrWRYcD8v8PuxfaVC677AsLblCt749c9fLYmEZMJXrm2F71aNvJAsyIiIp6jMCtSGy15AjZ+BiYLXP0BxPQrV/LR6gP8e+EOAJ4Y00V3+BIRkXpJYVaktvn9Ffh9ln177CvQ4aJyJV+tS+LRbzYDcNewtkw6p7X7+hMREalFFGZFapNVb8DiR+3bIx6DXjeUK1mQkML0LzcCcNM5rZk+qoM7OxQREalVFGZFaos178DCGfbt8x6AIdPKlSzeeph758RjM+Cavi147NLOmFzczlZERKS+0Po9IrXBn7NhwT/s2+dOheEPlyv5ftMh7puzgRKbwaXdo5l5RXetJSsiIvWeRmZFPG3lq/DDVPv2OVPs0wtOGW39al0SUz6Lp8RmcFnPZswa3xOLgqyIiIhGZkU8xjDgl3/Cihfsr8+ZAhc+VS7Ifrz6AP9XerHXtf1ieObybgqyIiIipRRmRTzBZoUfpsG69+2vL3gCzr3fqcQwDF5avJNXftkN2C/2euzSzppaICIichKFWRF3K8qFr2+H7d8DJrj0Jeh7s3NJiY2HvtrE1/HJAPz9/DimXtheF3uJiIicQmFWxJ2yD8Gn4yF1E1j84PK3oOsVziUFxdz58Tp+352BxWzi6XFdmdC/pYcaFhERqd0UZkXc5dAG+OxayEmBoMZw7afQcqBTye60HG7/cB1703MJ9rPw2vW9Gd6hqWf6FRER8QIKsyLusHEOfHcflORDk44wYQ6ExzqVLNySyrTPN3K8sIRmYQG8PbEvXZuHeaZfERERL6EwK1KTigvgp4dOXOjVdgRc/T4EnAipJVYbL/+8i1dLL/QaEBvO69f3JiLE3xMdi4iIeBWFWZGacnQ/fD4JUjYAJhj6IAx9AMwWR0nysXzun7OBNfszAbh5cGsevrgTvhYtAS0iIlIZCrMi1c0wYMOn8OODUJQDgY3gineh3QVOZT8mpPDgV5vILighxN+HZy7vymU9m3uoaREREe+kMCtSnXIz4LsppctuAS0HwRXvQMMYR0lWfjFPf7+VL9YlAdCjRRivTOhFq8bBnuhYRETEqynMilQHw4Ct38CCByA3Dcy+MPxhGHyv07SCJVsP8/C8BNJyCjGZ4Pbz2jDtwg74+WhagYiIyJlQmBU5W1lJ9rt57fzJ/jqiA1z5DkT3cJSk5RTwzA/b+HbDIQDaRATz3FXd6dc63BMdi4iI1BkKsyJnqqQI1rwFvz4LRcfto7FDpsKQaeBjX4mg2Grjw1UHmLV4JzmFJZhNcOuQNky9sD0Bvpa/+AIRERH5KwqzIlVlGLDjR1j0CGTute+LGQhjXoamHR1lv+1K55/fb2XH4RwAurcI45+XdaVHTEMPNC0iIlI3KcyKVEXyOvj5Kdj7q/11cFMY8Rj0vB7M9nmvm5OzeO6n7azYlQ5AoyBfHrioI9f0jcFiNnmocRERkbpJYVakMg5vgaX/OrFKgcUPBt1tn1Lg3wCw34r2lZ93M3+jfV6sr8XE9QNacd8F7WgY5OepzkVEROo0hVmR0zkUD7/Ngq3fAgaYzNB9vP0GCKW3o92Wks1rv+xmweYUDMP+tst6NmPahR1o2TjIY62LiIjUBwqzIqcyDNi3zB5i9y49sb/zOPtyW006YBgGv+9KZ/Zve1m644ijZGTnSKaMaEfX5mHlPlZERESqn8KsSJnCHNg0F9a8A0e22/eZLNDtKvt6sZFdyC0s4bs1ibz/+37HhV0mE1zSLZp7zo+jY1SoB38AERGR+kdhVuo3w4BD6yH+E9j0uf32swC+wdDrBvu82Eat2JycxafzEpi/4RDHC0sACPKzcE3fGG46pzWtI3T3LhEREU9QmJX6KSsZtnxtD7FHtp3Y3zgO+t8OPa7lUIEf8zce4pv45WxPzXGUtG4cxHUDWjK+X0vCAn090LyIiIiUUZiV+iM7BbZ9Zw+xiatO7PcJgE5joNcNpIT3Y9HWIyz431bW7M90XNDlZzEzqmsUE/rHMDC2MWYtsSUiIlIrKMxK3WWzQtJa2LUQdi2C1ATn4y3PwdbtarY0GsGyxCKW/JjGhoO/OpX0bx3OZb2acUm3aC2vJSIiUgspzErdcjzNfkODXYtg9xLIP3rSQRO06EtWm0tZ5nMOC5N8+P3HdI7lbXb6iD6tGnFRlyhGd4uiRSMtrSUiIlKbKcyK9zIMyNhjnzKQuNr+nLnHuSQgjNwWQ9kaMoglRV35+aCNPYtygRPLaTXw9+GcuMYMadeEkZ0jaRoa4OYfRERERM6Uwqx4j+NpkLIJUjfZbyubuBry0p1KDEzkNezAtpCBLCruwVdp0WRstpUetV/EZTZBz5iGDGnXhPPaR9CjRUN8LGY3/zAiIiJSHRRmpfYpKYTMvZC21T7Ptexx/HC5UqvZj+TgLmw0deCXvLb8fLwV2akhJ1XY8Pcx0615GL1bNaJ3y0YMattYqxCIiIjUEQqz4hnWEshOhqP7IH2XfbpAxi77dtZBMGzl3mJgIsWnBdtpzZqCGNZY27PZiKUozzmYxoQH0rtlI3rFNKRXy0Z0ig7Fz0cjryIiInWRwqxUP2uJ/a//c1LtUwOyk+DYQXtIzbJvGzmHMLkIrGWOE8RuWzO22Fqx1WjFFltrdhgtyOfEfNawQF96RjWgY1QDOpQ+t49sQIMAjbqKiIjUFx4Ps2+88Qb//ve/SUlJoUuXLsyaNYshQ4ZUWL9s2TKmTp3Kli1baNasGQ888ACTJ092Y8f1jGFAcR7kZUJ+pn11gLzS5/xMyDuKkZ+JNScNW85hTMcP41OQcdqgCmACCg0fkowm7DWi2WtEs8+IZq8tmr1GM9IJBUwE+Jpp1TiY1hFBDGgc7NhuExFCZKg/JpPWexUREanPPBpm586dy3333ccbb7zB4MGDeeuttxg9ejRbt26lZcuW5er37dvHxRdfzG233cbHH3/M77//zl133UWTJk248sorPfAT1DLWYijOt885LcmH4gKnZ6M4H2tRPtaCHKz5OdgKc7DmH8dWkIWtMAej8DimwuOYi3MwF+fiU3wc/+IsfIzi036tifL/IFkNE+mEccRoSKrRiGQjovTRpPS5MRmmMMKDA4gOCyQ6LIBmDQMZERbADQ0DaRYWQPNGgUQ2CNANCkRERKRCJsMou8eR+w0YMIDevXvz5ptvOvZ16tSJcePGMXPmzHL1Dz74IPPnz2fbthO3H508eTIbN25k1apV5epdyc7OJiwsjKysLEJDQ8/+h/gLSVtWkrNzBYatBKzFGNZisJVgshaDrRisxZhsxZhsJVD6bH8UYzbs22ZbCWbD/tq+bX/42IrwsRXiaxTiZxRi4fSjoWejyLBwjAYcNUI4RgjHjBCn7QxCOWpuRL5/E4oDm2AKakyDoEDCAn0JD/YlIsTf/mjgT0SIH01C/AkP9tMqAiIiIlJOVfKax0Zmi4qKWLduHQ899JDT/pEjR7Jy5UqX71m1ahUjR4502jdq1Chmz55NcXExvr7l50oWFhZSWFjoeJ2dnV0N3Vde0rofGbj3Fbd+J0Ch4UsBvhTgR4HhZ38ufeQZ/uQSSC6BFJgDKTQHU+ITTIlPEFbfEAy/YGx+DTD5NcAIagSB4fgGNCDI34cgfwvBfj4E+VmIDfSlYZAfYYG+NAzyJcDX4vafU0REROo3j4XZ9PR0rFYrkZGRTvsjIyNJTU11+Z7U1FSX9SUlJaSnpxMdHV3uPTNnzuTJJ5+svsarqkkHfj90HjaTDzaTL1azD4bJB5vJB8Psg630tWH2xTCfeMbsi2HxwWT2te+z+ILZB5PFF8q2fQMw+wVh9gvE4heExTcAH/8gfPwD8fP1wc9ixs/H/giymGnka8bfYnHss+iv70VERMTLefwCsFMv4DEM47QX9biqd7W/zIwZM5g6darjdXZ2NjExMWfabpUNHH0DjL7Bbd8nIiIiUp94LMxGRERgsVjKjcKmpaWVG30tExUV5bLex8eHxo0bu3yPv78//v7+1dO0iIiIiNQqHrv6xs/Pjz59+rB48WKn/YsXL+acc85x+Z5BgwaVq1+0aBF9+/Z1OV9WREREROo2j15KPnXqVN59913ee+89tm3bxv33309iYqJj3dgZM2YwceJER/3kyZM5cOAAU6dOZdu2bbz33nvMnj2bf/zjH576EURERETEgzw6Z3b8+PFkZGTw1FNPkZKSQteuXVmwYAGtWrUCICUlhcTEREd9bGwsCxYs4P777+f111+nWbNmvPLKK1pjVkRERKSe8ug6s57g7nVmRURERKRqqpLXtGK9iIiIiHgthVkRERER8VoKsyIiIiLitRRmRURERMRrKcyKiIiIiNdSmBURERERr6UwKyIiIiJeS2FWRERERLyWwqyIiIiIeC2FWRERERHxWgqzIiIiIuK1FGZFRERExGspzIqIiIiI1/LxdAPuZhgGANnZ2R7uRERERERcKctpZbntdOpdmM3JyQEgJibGw52IiIiIyOnk5OQQFhZ22hqTUZnIW4fYbDYOHTpEgwYNMJlMbvnO7OxsYmJiOHjwIKGhoW75Tm+g8+KazkvFdG5c03mpmM6NazovFdO5cc3d58UwDHJycmjWrBlm8+lnxda7kVmz2UyLFi088t2hoaH6F8MFnRfXdF4qpnPjms5LxXRuXNN5qZjOjWvuPC9/NSJbRheAiYiIiIjXUpgVEREREa+lMOsG/v7+PP744/j7+3u6lVpF58U1nZeK6dy4pvNSMZ0b13ReKqZz41ptPi/17gIwEREREak7NDIrIiIiIl5LYVZEREREvJbCrIiIiIh4LYVZEREREfFaCrM1qHXr1phMJqfHQw895FSTmJjImDFjCA4OJiIigilTplBUVOShjt2vsLCQnj17YjKZ2LBhg9Ox+nhuxo4dS8uWLQkICCA6Opobb7yRQ4cOOdXUx/Oyf/9+brnlFmJjYwkMDKRt27Y8/vjj5X7u+nhunnnmGc455xyCgoJo2LChy5r6eF4A3njjDWJjYwkICKBPnz6sWLHC0y253fLlyxkzZgzNmjXDZDLxzTffOB03DIMnnniCZs2aERgYyLBhw9iyZYtnmnWjmTNn0q9fPxo0aEDTpk0ZN24cO3bscKqpj+fmzTffpHv37o4bIwwaNIgff/zRcby2nhOF2Rr21FNPkZKS4nj83//9n+OY1WrlkksuITc3l99++405c+bw1VdfMW3aNA927F4PPPAAzZo1K7e/vp6b4cOH8/nnn7Njxw6++uor9uzZw1VXXeU4Xl/Py/bt27HZbLz11lts2bKFl156if/+9788/PDDjpr6em6Kioq4+uqrufPOO10er6/nZe7cudx333088sgjxMfHM2TIEEaPHk1iYqKnW3Or3NxcevTowWuvveby+PPPP8+LL77Ia6+9xp9//klUVBQXXnghOTk5bu7UvZYtW8bdd9/N6tWrWbx4MSUlJYwcOZLc3FxHTX08Ny1atODZZ59l7dq1rF27lvPPP5/LLrvMEVhr7TkxpMa0atXKeOmllyo8vmDBAsNsNhvJycmOfZ999pnh7+9vZGVluaFDz1qwYIHRsWNHY8uWLQZgxMfHOx2rz+emzLfffmuYTCajqKjIMAydl5M9//zzRmxsrON1fT8377//vhEWFlZuf309L/379zcmT57stK9jx47GQw895KGOPA8w5s2b53hts9mMqKgo49lnn3XsKygoMMLCwoz//ve/HujQc9LS0gzAWLZsmWEYOjcna9SokfHuu+/W6nOikdka9txzz9G4cWN69uzJM8884/RXe6tWraJr165OI5OjRo2isLCQdevWeaJdtzl8+DC33XYbH330EUFBQeWO1+dzUyYzM5NPPvmEc845B19fX0Dn5WRZWVmEh4c7XuvcuFYfz0tRURHr1q1j5MiRTvtHjhzJypUrPdRV7bNv3z5SU1OdzpO/vz9Dhw6td+cpKysLwPE7RefG/rc6c+bMITc3l0GDBtXqc6IwW4Puvfde5syZw9KlS7nnnnuYNWsWd911l+N4amoqkZGRTu9p1KgRfn5+pKamurtdtzEMg5tuuonJkyfTt29flzX19dwAPPjggwQHB9O4cWMSExP59ttvHcfq83k52Z49e3j11VeZPHmyY5/OjWv18bykp6djtVrL/dyRkZF19mc+E2Xnor6fJ8MwmDp1Kueeey5du3YF6ve5SUhIICQkBH9/fyZPnsy8efPo3LlzrT4nCrNV9MQTT5S7qOvUx9q1awG4//77GTp0KN27d+fWW2/lv//9L7NnzyYjI8PxeSaTqdx3GIbhcn9tV9lz8+qrr5Kdnc2MGTNO+3l15dxU5Z8ZgOnTpxMfH8+iRYuwWCxMnDgR46Qb9dWV8wJVPzcAhw4d4qKLLuLqq6/m1ltvdTpWV87NmZyX06kr56WqTv356sPPfCbq+3m655572LRpE5999lm5Y/Xx3HTo0IENGzawevVq7rzzTiZNmsTWrVsdx2vjOfHx6Ld7oXvuuYdrr732tDWtW7d2uX/gwIEA7N69m8aNGxMVFcUff/zhVHP06FGKi4vL/ZePN6jsuXn66adZvXp1ufs79+3bl+uvv57//e9/dercVPWfmYiICCIiImjfvj2dOnUiJiaG1atXM2jQoDp1XqDq5+bQoUMMHz6cQYMG8fbbbzvV1aVzcza/Z05Vl85LZUVERGCxWMqNFqWlpdXZn/lMREVFAfZRyOjoaMf++nSe/v73vzN//nyWL19OixYtHPvr87nx8/MjLi4OsP+5/Oeff/Lyyy/z4IMPArX0nHhmqm799N133xmAceDAAcMwTlyYcejQIUfNnDlz6vyFGQcOHDASEhIcj4ULFxqA8eWXXxoHDx40DKP+nptTJSYmGoCxdOlSwzDq93lJSkoy2rVrZ1x77bVGSUlJueP1+dwYxl9fAFbfzkv//v2NO++802lfp06ddAGYiwvAnnvuOce+wsLCWnFBT02z2WzG3XffbTRr1szYuXOny+P19dyc6vzzzzcmTZpUq8+JwmwNWblypfHiiy8a8fHxxt69e425c+cazZo1M8aOHeuoKSkpMbp27WqMGDHCWL9+vbFkyRKjRYsWxj333OPBzt1v37595VYzqI/n5o8//jBeffVVIz4+3ti/f7/xyy+/GOeee67Rtm1bo6CgwDCM+nleDMMwkpOTjbi4OOP88883kpKSjJSUFMejTH09NwcOHDDi4+ONJ5980ggJCTHi4+ON+Ph4IycnxzCM+nte5syZY/j6+hqzZ882tm7datx3331GcHCwsX//fk+35lY5OTmOfyYAx59LZYMqzz77rBEWFmZ8/fXXRkJCgjFhwgQjOjrayM7O9nDnNevOO+80wsLCjF9//dXp90leXp6jpj6emxkzZhjLly839u3bZ2zatMl4+OGHDbPZbCxatMgwjNp7ThRma8i6deuMAQMGGGFhYUZAQIDRoUMH4/HHHzdyc3Od6g4cOGBccsklRmBgoBEeHm7cc889juBSX7gKs4ZR/87Npk2bjOHDhxvh4eGGv7+/0bp1a2Py5MlGUlKSU119Oy+GYR91BFw+TlYfz82kSZNcnpey0XzDqJ/nxTAM4/XXXzdatWpl+Pn5Gb1793Ysu1SfLF261OU/H5MmTTIMwz4C+fjjjxtRUVGGv7+/cd555xkJCQmebdoNKvp98v777ztq6uO5+dvf/ub4d6ZJkybGiBEjHEHWMGrvOTEZxklXloiIiIiIeBGtZiAiIiIiXkthVkRERES8lsKsiIiIiHgthVkRERER8VoKsyIiIiLitRRmRURERMRrKcyKiIiIiNdSmBURqUEffPABDRs29HQbHvHoo49y++23n7Zm2LBh3HfffW7p56qrruLFF190y3eJiPsozIpIrWMymU77uOmmmzzdYqWNHz+enTt3Ol4/8cQT9OzZ03MNucnhw4d5+eWXefjhh6v0vmHDhjn+fzabzURGRnL11Vdz4MCBs+7pscce45lnniE7O/usP0tEag+FWRGpdVJSUhyPWbNmERoa6rTv5ZdfdqovLi72UKd/LTAwkKZNm3q6jRphtVqx2Wwuj82ePZtBgwbRunXrKn/ubbfdRkpKCsnJyXz77bccPHiQG2644Sy7he7du9O6dWs++eSTs/4sEak9FGZFpNaJiopyPMLCwjCZTI7XBQUFNGzYkM8//5xhw4YREBDAxx9/TEZGBhMmTKBFixYE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tm3ccccdpKamVukzPvjgA2bPns3mzZvZu3cvH330EYGBgbRq1ara+mzdujX79u1jw4YNpKenn/ZCpKKiIm655Ra2bt3Kjz/+yOOPP84999yD2WwmODiYO++8k+nTp/PTTz+xdetWbrvtNvLy8rjlllscnzFs2DB++uknTCYTnTt3duz75JNPHFMMANq3b8/111/PxIkT+frrr9m3bx9//vknzz33HAsWLKjSz2g2m7ngggucgnZISAi33HIL06dP5+eff2bz5s3cdNNNmM3l/xjKy8sjNTWV1NRUNm7cyF133UVAQAAjR46sUh+urFixolo+R0RqD4VZEakTHn30UXr37s2oUaMYNmwYUVFRjBs3rkqf0bBhQ9555x0GDx5M9+7d+fnnn/nuu+9o3LhxtfV55ZVXctFFFzF8+HCaNGly2mWiRowYQbt27TjvvPO45pprGDNmjNNSYs8++yxXXnklN954I71792b37t0sXLiQRo0aOWrOO+88AIYOHeqYHjB06FCsVqtTmAV4//33mThxItOmTaNDhw6MHTuWP/74g5iYmCr/nLfffjtz5sxx+mv+f//735x33nmMHTuWCy64gHPPPZc+ffqUe+8777xDdHQ00dHRDB8+nCNHjrBgwQKX82uroqCggHnz5nHbbbed1eeISO1iMqoykUlERNzipptu4tixY3zzzTeebuWMGIbBwIEDue+++5gwYYKn2wHg9ddf59tvv2XRokWebkVEqpFGZkVEpNqZTCbefvvtcqtBeJKvr2+5dWdFxPtpZFZEpBby9pFZERF3UZgVEREREa+laQYiIiIi4rUUZkVERETEaynMioiIiIjXUpgVEREREa+lMCsiIiIiXkthVkRERES8lsKsiIiIiHgthVkRERER8VoKsyIiIiLitf4foSw9s9jv4ywAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(8, 6))\n", + "plt.plot(Pt, all_results[0][\"rates\"][2])\n", + "plt.plot(Pt, all_results[1][\"rates\"][2])\n", + "plt.xlabel(\"Transmit power (dBm)\")\n", + "plt.ylabel(\"Sum rate (bps/Hz)\")\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "simcomm", + "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.10.12" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/research/statistical_analysis/main.py b/research/statistical_analysis/main.py new file mode 100644 index 0000000..3257ba6 --- /dev/null +++ b/research/statistical_analysis/main.py @@ -0,0 +1,1001 @@ +import argparse +import os + +import mpmath as mpm +import numpy as np +import scipy as sp +import scipy.io as io +from colorama import Fore, Style +from config import constants, environment, setting +from scipy.special import gamma + +from simcomm.core import get_rvs +from simcomm.core.propagation import get_noise_power, get_pathloss +from simcomm.utils import db2pow, dbm2pow, get_distance, pow2db, qfunc + + +def generalized_beta_prime_pdf(x, a, b, p, q): + return (p * ((x / q) ** (a * p - 1)) * (1 + (x / q) ** p) ** (-a - b)) / ( + q * sp.special.beta(a, b) + ) + + +def hypergeometric_f1_regularized(a, b, c): + return sp.special.hyp1f1(a, b, c) / sp.special.gamma(b) + + +def fun_mu_h_ic(p, m_ic, omega_ic): + return (gamma(m_ic + p / 2) / gamma(m_ic)) * (m_ic / omega_ic) ** (-p / 2) + + +def fun_mu_h_Rc(p, m_Rc, omega_Rc): + return gamma(m_Rc + p / 2) / gamma(m_Rc) * (m_Rc / omega_Rc) ** (-p / 2) + + +def fun_mu_G_iRc(p, m_iR, omega_iR, m_Rc, omega_Rc, K, beta_r): + return ( + gamma(m_Rc + (p / 2)) + * (np.sqrt(beta_r) * K) ** p + * gamma(m_iR + (p / 2)) + * ((m_iR * m_Rc) / (omega_iR * omega_Rc)) ** (-p / 2) + ) / (gamma(m_iR) * gamma(m_Rc)) + + +def fun_mu_h_ic_sqr_interf(p, m_ic, omega_ic): + return (gamma(m_ic + p) / gamma(m_ic)) * (m_ic / omega_ic) ** (-p) + + +def fun_mu_h_if(p, m_if, omega_if): + return (gamma(m_if + p / 2) / gamma(m_if)) * (m_if / omega_if) ** (-p / 2) + + +def fun_mu_G_iRf(p, m_iR, omega_iR, m_Rf, omega_Rf, K, beta_t): + return ( + gamma(m_Rf + (p / 2)) + * (np.sqrt(beta_t) * K) ** p + * gamma(m_iR + (p / 2)) + * ((m_iR * m_Rf) / (omega_iR * omega_Rf)) ** (-p / 2) + ) / (gamma(m_iR) * gamma(m_Rf)) + + +def rate_meijerg(k, m, theta, omega): + return (1 / (mpm.log(2) * mpm.beta(k, m) * mpm.gamma(k + m))) * mpm.meijerg( + [[0, 1 - m], [1]], [[0, 0, k], []], mpm.mpf(omega) / mpm.mpf(theta) + ) + + +def main(N, link_option, custom_run, save_path): + # Load the environment + pathloss_cfg = environment["pathloss"] + fading_cfg = environment["fading"] + positions = environment["positions"] + + # Additional parameters + BANDWIDTH = constants["BANDWIDTH"] # Bandwidth in Hz + TEMP = constants["TEMP"] # Temperature in Kelvin + FREQ = constants["FREQ"] # Frequency of carrier signal in Hz + SIGMA = constants["SIGMA"] # Shadowing standard deviation in dB + + # Positions + pos_BS1 = positions["BS1"] + pos_BS2 = positions["BS2"] + pos_RIS = positions["RIS"] + pos_U1c = positions["U1c"] + pos_U2c = positions["U2c"] + pos_Uf = positions["Uf"] + + # Distance parameters + ## BS1 specific distances + distance_iR = get_distance(pos_BS1, pos_RIS, 3) + distance_Rc = get_distance(pos_RIS, pos_U1c, 3) + distance_ic = get_distance(pos_BS1, pos_U1c, 3) + distance_if = get_distance(pos_BS1, pos_Uf, 3) + + ## BS2 specific distances + distance_iR_hat = get_distance(pos_BS2, pos_RIS, 3) + distance_if_hat = get_distance(pos_BS2, pos_Uf, 3) + + ## Common distances + distance_Rf = get_distance(pos_RIS, pos_Uf, 3) + distance_ic_prime = get_distance(pos_BS2, pos_U1c, 3) + + ## BS specific distances for U2 + distance_ic_u2 = get_distance(pos_BS2, pos_U2c, 3) + distance_Rc_u2 = get_distance(pos_RIS, pos_U2c, 3) + distance_ic_prime_u2 = get_distance(pos_BS1, pos_U2c, 3) + + # Simulation parameters + N = 10000 + shape = (N, 1) + + # Additional parameters + BANDWIDTH = constants["BANDWIDTH"] # Bandwidth in Hz + TEMP = constants["TEMP"] # Temperature in Kelvin + FREQ = constants["FREQ"] # Frequency of carrier signal in Hz + SIGMA = constants["SIGMA"] # Shadowing standard deviation in dB + + Pt = np.linspace(-40, 20, 121) # Transmit power in dBm + Pt_lin = dbm2pow(Pt) # Transmit power in linear scale + N0 = get_noise_power(BANDWIDTH, TEMP, 12) # Noise power in dBm + N0_lin = dbm2pow(N0) # Noise power in linear scale + + params = setting[link_option] + ris_enhanced = params["ris_enhanced"] # Whether to use RIS-enhanced transmission + comp_enabled = params["comp_enabled"] # Whether to use computation offloading + + # Power allocation + zeta_ic = 0.3 + zeta_if = 0.7 + zeta_ic_hat = 0.3 + zeta_if_hat = 0.7 + + # RIS parameters + K = params["ris_elements"] + beta_r = 0.5 + beta_t = 0.5 + shape_ris = (K // 2, N, 1) + + rho = Pt_lin / N0_lin # SNR + + # Scaling factors + scale_ic = np.zeros_like(rho) + scale_ic_prime = np.linspace(0.001, 1.4, len(rho) - 20) + scale_ic[20:] = scale_ic_prime + scale_f = np.linspace(0.01, 0.15, len(rho)) + + # Pathloss computations + pathloss_iR = get_pathloss( + **pathloss_cfg["ris"], distance=distance_iR, frequency=FREQ + ) + pathloss_Rc = get_pathloss( + **pathloss_cfg["risC"], distance=distance_Rc, frequency=FREQ + ) + pathloss_ic = get_pathloss( + **pathloss_cfg["center"], distance=distance_ic, frequency=FREQ + ) + pathloss_ic_prime = get_pathloss( + **pathloss_cfg["inter"], distance=distance_ic_prime, frequency=FREQ + ) + pathloss_ic_u2 = get_pathloss( + **pathloss_cfg["center"], distance=distance_ic_u2, frequency=FREQ + ) + pathloss_ic_prime_u2 = get_pathloss( + **pathloss_cfg["inter"], distance=distance_ic_prime_u2, frequency=FREQ + ) + pathloss_Rc_u2 = get_pathloss( + **pathloss_cfg["risC"], distance=distance_Rc_u2, frequency=FREQ + ) + pathloss_if = get_pathloss( + **pathloss_cfg["edge"], distance=distance_if, frequency=FREQ + ) + pathloss_iR_hat = get_pathloss( + **pathloss_cfg["ris"], distance=distance_iR_hat, frequency=FREQ + ) + pathloss_if_hat = get_pathloss( + **pathloss_cfg["edge"], distance=distance_if_hat, frequency=FREQ + ) + pathloss_Rf = get_pathloss( + **pathloss_cfg["risE"], distance=distance_Rf, frequency=FREQ + ) + + # Fading samples + samples_iR = get_rvs(**fading_cfg["nakagami-d"], shape=shape_ris) + samples_Rc = get_rvs(**fading_cfg["nakagami-d"], shape=shape_ris) + samples_ic = get_rvs(**fading_cfg["nakagami-id"], shape=shape) + samples_ic_prime = get_rvs(**fading_cfg["nakagami-id"], shape=shape) + + samples_if = get_rvs(**fading_cfg["nakagami-id"], shape=shape) + samples_iR_hat = get_rvs(**fading_cfg["nakagami-d"], shape=shape_ris) + samples_if_hat = get_rvs(**fading_cfg["nakagami-id"], shape=shape) + samples_Rf = get_rvs(**fading_cfg["nakagami-d"], shape=shape_ris) + + # Channel generation + print(f"{Fore.GREEN}Computing ...{Style.RESET_ALL}") + + h_iR = np.abs(np.sqrt(db2pow(-1 * pathloss_iR)) * samples_iR) + h_Rc = np.abs(np.sqrt(db2pow(-1 * pathloss_Rc)) * samples_Rc) + h_ic = np.abs(np.sqrt(db2pow(-1 * pathloss_ic)) * samples_ic) + h_ic_prime = np.abs(np.sqrt(db2pow(-1 * pathloss_ic_prime)) * samples_ic_prime) + h_if = np.abs(np.sqrt(db2pow(-1 * pathloss_if)) * samples_if) + h_iR_hat = np.abs(np.sqrt(db2pow(-1 * pathloss_iR_hat)) * samples_iR_hat) + h_if_hat = np.abs(np.sqrt(db2pow(-1 * pathloss_if_hat)) * samples_if_hat) + h_Rf = np.abs(np.sqrt(db2pow(-1 * pathloss_Rf)) * samples_Rf) + h_ic_u2 = np.abs(np.sqrt(db2pow(-1 * pathloss_ic_u2)) * samples_ic) + h_ic_prime_u2 = np.abs( + np.sqrt(db2pow(-1 * pathloss_ic_prime_u2)) * samples_ic_prime + ) + h_Rc_u2 = np.abs(np.sqrt(db2pow(-1 * pathloss_Rc_u2)) * samples_Rc) + + cascaded_ic = np.sum(h_iR * h_Rc, axis=0) * np.sqrt(beta_r) + H_ic = cascaded_ic + h_ic + + cascaded_if = np.sum(h_iR * h_Rf, axis=0) * np.sqrt(beta_t) + cascaded_if_hat = np.sum(h_iR_hat * h_Rf, axis=0) * np.sqrt(beta_t) + H_if = cascaded_if + h_if + H_if_hat = cascaded_if_hat + h_if_hat + + cascaded_ic_u2 = np.sum(h_iR_hat * h_Rc_u2, axis=0) * np.sqrt(beta_r) + H_ic_u2 = cascaded_ic_u2 + h_ic_u2 + + ## PDF of SINR $\gamma_{i,c\rightarrow f}$ + # Effective Channel $\textbf{H}_{i, c}=\textbf{h}_{i, c}+\textbf{h}_{R, c}^H \mathbf{\Theta_r}\textbf{h}_{i, R}$ + # Channel Gain $Z_{i,c} = |H_{i,c}|^2 = (h_{i,c} + G_{i,R,c})^2$ + # Direct Channel $h_{i,c}$ + + m_ic = fading_cfg["nakagami-id"]["m"] + omega_ic = fading_cfg["nakagami-id"]["omega"] * db2pow(-1 * pathloss_ic) + omega_ic_prime = fading_cfg["nakagami-id"]["omega"] * db2pow(-1 * pathloss_ic_prime) + + omega_ic_u2 = fading_cfg["nakagami-id"]["omega"] * db2pow(-1 * pathloss_ic_u2) + omega_ic_prime_u2 = fading_cfg["nakagami-id"]["omega"] * db2pow( + -1 * pathloss_ic_prime_u2 + ) + + mu_h_ic = fun_mu_h_ic(1, m_ic, omega_ic) # 1st moment of h_ic + mu_h_ic_2 = fun_mu_h_ic(2, m_ic, omega_ic) # 2nd moment of h_ic + + mu_h_ic_u2 = fun_mu_h_ic(1, m_ic, omega_ic_u2) # 1st moment of h_ic + mu_h_ic_2_u2 = fun_mu_h_ic(2, m_ic, omega_ic_u2) # 2nd moment of h_ic + + k_h_ic = (mu_h_ic**2) / (mu_h_ic_2 - mu_h_ic**2) # Shape parameter of h_ic + theta_h_ic = (mu_h_ic_2 - mu_h_ic**2) / mu_h_ic # Scale parameter of h_ic + + k_h_ic_u2 = (mu_h_ic_u2**2) / ( + mu_h_ic_2_u2 - mu_h_ic_u2**2 + ) # Shape parameter of h_ic + theta_h_ic_u2 = ( + mu_h_ic_2_u2 - mu_h_ic_u2**2 + ) / mu_h_ic_u2 # Scale parameter of h_ic + + # Cascaded Channel $G_{i,R,c} = \sqrt{\beta_r} \sum_{k=1}^{K} |{h_{R,c}}||{h_{i,R}}|$ + m_iR = fading_cfg["nakagami-d"]["m"] + m_Rc = fading_cfg["nakagami-d"]["m"] + omega_iR = fading_cfg["nakagami-d"]["omega"] * db2pow(-1 * pathloss_iR) + omega_Rc = fading_cfg["nakagami-d"]["omega"] * db2pow(-1 * pathloss_Rc) + omega_Rc_u2 = fading_cfg["nakagami-d"]["omega"] * db2pow(-1 * pathloss_Rc_u2) + + mu_G_iRc = fun_mu_G_iRc( + 1, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r + ) # 1st moment of G_iRc + mu_G_iRc_2 = fun_mu_G_iRc( + 2, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r + ) # 2nd moment of G_iRc + + mu_G_iRc_u2 = fun_mu_G_iRc( + 1, m_iR, omega_iR, m_Rc, omega_Rc_u2, K // 2, beta_r + ) # 1st moment of G_iRc + mu_G_iRc_2_u2 = fun_mu_G_iRc( + 2, m_iR, omega_iR, m_Rc, omega_Rc_u2, K // 2, beta_r + ) # 2nd moment of G_iRc + + k_G_iRc = mu_G_iRc**2 / (mu_G_iRc_2 - mu_G_iRc**2) # Shape parameter of G_iRc + theta_G_iRc = (mu_G_iRc_2 - mu_G_iRc**2) / mu_G_iRc # Scale parameter of G_iRc + + k_G_iRc_u2 = mu_G_iRc_u2**2 / ( + mu_G_iRc_2_u2 - mu_G_iRc_u2**2 + ) # Shape parameter of G_iRc + theta_G_iRc_u2 = ( + mu_G_iRc_2_u2 - mu_G_iRc_u2**2 + ) / mu_G_iRc_u2 # Scale parameter of G_iRc + + # Effective Channel Gain $Z_{i,c} = |H_{i,c}|^2 = (h_{i,c} + G_{i,R,c})^2$ + mu_Z_ic = ( + fun_mu_G_iRc(2, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r) + + fun_mu_h_ic(2, m_ic, omega_ic) + + ( + 2 + * fun_mu_G_iRc(1, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r) + * fun_mu_h_ic(1, m_ic, omega_ic) + ) + ) + + mu_Z_ic_2 = ( + fun_mu_G_iRc(4, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r) + + fun_mu_h_ic(4, m_ic, omega_ic) + + ( + 6 + * fun_mu_G_iRc(2, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r) + * fun_mu_h_ic(2, m_ic, omega_ic) + ) + + ( + 4 + * fun_mu_h_ic(3, m_ic, omega_ic) + * fun_mu_G_iRc(1, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r) + ) + + ( + 4 + * fun_mu_h_ic(1, m_ic, omega_ic) + * fun_mu_G_iRc(3, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r) + ) + ) + + mu_Z_ic_u2 = ( + fun_mu_G_iRc(2, m_iR, omega_iR, m_Rc, omega_Rc_u2, K // 2, beta_r) + + fun_mu_h_ic(2, m_ic, omega_ic_u2) + + ( + 2 + * fun_mu_G_iRc(1, m_iR, omega_iR, m_Rc, omega_Rc_u2, K // 2, beta_r) + * fun_mu_h_ic(1, m_ic, omega_ic_u2) + ) + ) + + mu_Z_ic_2_u2 = ( + fun_mu_G_iRc(4, m_iR, omega_iR, m_Rc, omega_Rc_u2, K // 2, beta_r) + + fun_mu_h_ic(4, m_ic, omega_ic_u2) + + ( + 6 + * fun_mu_G_iRc(2, m_iR, omega_iR, m_Rc, omega_Rc_u2, K // 2, beta_r) + * fun_mu_h_ic(2, m_ic, omega_ic_u2) + ) + + ( + 4 + * fun_mu_h_ic(3, m_ic, omega_ic_u2) + * fun_mu_G_iRc(1, m_iR, omega_iR, m_Rc, omega_Rc_u2, K // 2, beta_r) + ) + + ( + 4 + * fun_mu_h_ic(1, m_ic, omega_ic_u2) + * fun_mu_G_iRc(3, m_iR, omega_iR, m_Rc, omega_Rc_u2, K // 2, beta_r) + ) + ) + + k_Z_ic = mu_Z_ic**2 / (mu_Z_ic_2 - mu_Z_ic**2) # Shape parameter of Z_ic + theta_Z_ic = (mu_Z_ic_2 - mu_Z_ic**2) / mu_Z_ic # Scale parameter of Z_ic + + k_Z_ic_u2 = mu_Z_ic_u2**2 / ( + mu_Z_ic_2_u2 - mu_Z_ic_u2**2 + ) # Shape parameter of Z_ic + theta_Z_ic_u2 = ( + mu_Z_ic_2_u2 - mu_Z_ic_u2**2 + ) / mu_Z_ic_u2 # Scale parameter of Z_ic + + # $\mathcal{V_{i,c,f}} = {\zeta_{i,f}\rho|\textbf{H}_{i,c}|^2},$ + # where $\rho = \frac{P}{\sigma^2}$ + + simulation_V_icf = zeta_if * rho * H_ic**2 + simulation_V_icf_u2 = zeta_if * rho * H_ic_u2**2 + + k_V_icf = k_Z_ic * np.ones_like(rho) + theta_V_icf = theta_Z_ic * zeta_if * rho + + k_V_icf_u2 = k_Z_ic_u2 * np.ones_like(rho) + theta_V_icf_u2 = theta_Z_ic_u2 * zeta_if * rho + + # $\mathcal{B_{i,c,f}} = {\zeta_{i,c}\rho|\textbf{H}_{i,c}|^2 + \rho|\textbf{h}_{i,c^\prime}|^2 + 1}$ + # $\mathcal{B_{i,c,f}} = {\mathcal{W_{i,c}} + 1}$, + # where $\mathcal{W_{i,c,f}} = \zeta_{i,c}\rho|\textbf{H}_{i,c}|^2 + \rho|\textbf{h}_{i,c^\prime}|^2$ + + simulation_W_icf = (zeta_ic * rho * H_ic**2) + (rho * h_ic_prime**2) + simulation_B_icf = simulation_W_icf + 1 + + simulation_W_icf_u2 = (zeta_ic * rho * H_ic_u2**2) + (rho * h_ic_prime_u2**2) + simulation_B_icf_u2 = simulation_W_icf_u2 + 1 + + # $\mu _{\mathcal{W}_{ic}} = \rho \mu _{h_{ic}}+\zeta \rho \mu _{Z_{ic}}$ + # $\mu _{\mathcal{W}_{ic}}^{(2)} = \rho ^2 \left(\zeta \left(2 \mu _{h_{ic}} \mu + # _{Z_{ic}}+\zeta \mu _{Z_{\text{ic2}}}\right)+\mu + # _{h_{\text{ic2}}}\right)$ + + mu_W_icf = ( + rho * fun_mu_h_ic_sqr_interf(1, m_ic, omega_ic_prime) + zeta_ic * rho * mu_Z_ic + ) # 1st moment of W_ic + + mu_W_icf_2 = rho**2 * ( + zeta_ic + * ( + (2 * fun_mu_h_ic_sqr_interf(1, m_ic, omega_ic_prime) * mu_Z_ic) + + zeta_ic * mu_Z_ic_2 + ) + + fun_mu_h_ic_sqr_interf(2, m_ic, omega_ic_prime) + ) # 2nd moment of W_ic + + mu_W_icf_u2 = ( + rho * fun_mu_h_ic_sqr_interf(1, m_ic, omega_ic_prime_u2) + + zeta_ic * rho * mu_Z_ic_u2 + ) # 1st moment of W_ic + + mu_W_icf_2_u2 = rho**2 * ( + zeta_ic + * ( + (2 * fun_mu_h_ic_sqr_interf(1, m_ic, omega_ic_prime_u2) * mu_Z_ic_u2) + + zeta_ic * mu_Z_ic_2_u2 + ) + + fun_mu_h_ic_sqr_interf(2, m_ic, omega_ic_prime_u2) + ) # 2nd moment of W_ic + + k_W_icf = mu_W_icf**2 / (mu_W_icf_2 - mu_W_icf**2) # Shape parameter of W_ic + theta_W_icf = (mu_W_icf_2 - mu_W_icf**2) / mu_W_icf # Scale parameter of W_ic + + k_W_icf_u2 = mu_W_icf_u2**2 / ( + mu_W_icf_2_u2 - mu_W_icf_u2**2 + ) # Shape parameter of W_ic + theta_W_icf_u2 = ( + mu_W_icf_2_u2 - mu_W_icf_u2**2 + ) / mu_W_icf_u2 # Scale parameter of W_ic + + mu_B_icf = mu_W_icf + 1 # 1st moment of B_icf + mu_B_icf_2 = mu_W_icf_2 + 2 * mu_W_icf + 1 # 2nd moment of B_icf + + mu_B_icf_u2 = mu_W_icf_u2 + 1 # 1st moment of B_icf + mu_B_icf_2_u2 = mu_W_icf_2_u2 + 2 * mu_W_icf_u2 + 1 # 2nd moment of B_icf + + k_B_icf = mu_B_icf**2 / (mu_B_icf_2 - mu_B_icf**2) # Shape parameter of B_icf + theta_B_icf = (mu_B_icf_2 - mu_B_icf**2) / mu_B_icf # Scale parameter of B_icf + + k_B_icf_u2 = mu_B_icf_u2**2 / ( + mu_B_icf_2_u2 - mu_B_icf_u2**2 + ) # Shape parameter of B_icf + theta_B_icf_u2 = ( + mu_B_icf_2_u2 - mu_B_icf_u2**2 + ) / mu_B_icf_u2 # Scale parameter of B_icf + + simulation_SINR_icf = simulation_V_icf / simulation_B_icf + simulation_SINR_icf_u2 = simulation_V_icf_u2 / simulation_B_icf_u2 + + # ### PDF of SINR $\gamma_{i,c}$ + + # $\mathcal{V_{i,c}} = {\zeta_{i,c}\rho|\textbf{H}_{i,c}|^2},$ + # + # where $\rho = \frac{P}{\sigma^2}$ + + simulation_V_ic = zeta_ic * rho * H_ic**2 + simulation_V_ic_noK = zeta_ic * rho * h_ic**2 + simulation_V_ic_u2 = zeta_ic * rho * H_ic_u2**2 + simulation_V_ic_u2_noK = zeta_ic * rho * h_ic_u2**2 + + k_V_ic = k_Z_ic * np.ones_like(rho) + theta_V_ic = theta_Z_ic * zeta_ic * rho + + k_V_ic_u2 = k_Z_ic_u2 * np.ones_like(rho) + theta_V_ic_u2 = theta_Z_ic_u2 * zeta_ic * rho + + # $\mathcal{B_{i,c}} = {\rho|\textbf{h}_{i,c^\prime}|^2 + 1}$ + # + # $\mathcal{B_{i,c}} = {\mathcal{W_{i,c}} + 1}$, + # + # where $\mathcal{W_{i,c}} = \rho|\textbf{h}_{i,c^\prime}|^2$ + + simulation_B_ic = (rho * h_ic_prime**2) + 1 + simulation_B_ic_u2 = (rho * h_ic_prime_u2**2) + 1 + simulation_B_ic_noK = (rho * h_ic_prime**2) + 1 + simulation_B_ic_u2_noK = (rho * h_ic_prime_u2**2) + 1 + + mu_W_ic = rho * fun_mu_h_ic_sqr_interf( + 1, m_ic, omega_ic_prime + ) # 1st moment of W_ic + mu_W_ic_2 = rho**2 * fun_mu_h_ic_sqr_interf( + 2, m_ic, omega_ic_prime + ) # 2nd moment of W_ic + + mu_W_ic_u2 = rho * fun_mu_h_ic_sqr_interf( + 1, m_ic, omega_ic_prime_u2 + ) # 1st moment of W_ic + mu_W_ic_2_u2 = rho**2 * fun_mu_h_ic_sqr_interf( + 2, m_ic, omega_ic_prime_u2 + ) # 2nd moment of W_ic + + k_W_ic = mu_W_ic**2 / (mu_W_ic_2 - mu_W_ic**2) # Shape parameter of W_ic + theta_W_ic = (mu_W_ic_2 - mu_W_ic**2) / mu_W_ic # Scale parameter of W_ic + + k_W_ic_u2 = mu_W_ic_u2**2 / ( + mu_W_ic_2_u2 - mu_W_ic_u2**2 + ) # Shape parameter of W_ic + theta_W_ic_u2 = ( + mu_W_ic_2_u2 - mu_W_ic_u2**2 + ) / mu_W_ic_u2 # Scale parameter of W_ic + + mu_B_ic = mu_W_ic + 1 # 1st moment of B_ic + mu_B_ic_2 = mu_W_ic_2 + 2 * mu_W_ic + 1 # 2nd moment of B_ic + + mu_B_ic_u2 = mu_W_ic_u2 + 1 # 1st moment of B_ic + mu_B_ic_2_u2 = mu_W_ic_2_u2 + 2 * mu_W_ic_u2 + 1 # 2nd moment of B_ic + + k_B_ic = mu_B_ic**2 / (mu_B_ic_2 - mu_B_ic**2) # Shape parameter of B_ic + theta_B_ic = (mu_B_ic_2 - mu_B_ic**2) / mu_B_ic # Scale parameter of B_ic + + k_B_ic_u2 = mu_B_ic_u2**2 / ( + mu_B_ic_2_u2 - mu_B_ic_u2**2 + ) # Shape parameter of B_ic + theta_B_ic_u2 = ( + mu_B_ic_2_u2 - mu_B_ic_u2**2 + ) / mu_B_ic_u2 # Scale parameter of B_ic + + simulation_SINR_ic = simulation_V_ic / simulation_B_ic + simulation_SINR_ic_u2 = simulation_V_ic_u2 / simulation_B_ic_u2 + simulation_SINR_ic_noK = simulation_V_ic_noK / simulation_B_ic_noK + simulation_SINR_ic_u2_noK = simulation_V_ic_u2_noK / simulation_B_ic_u2_noK + + ### PDF of SINR $\gamma_{f}$ + # Effective Channel $\textbf{H}_{i, f}=\textbf{h}_{i, f}+\textbf{h}_{R, f}^H \mathbf{\Theta_r}\textbf{h}_{i, R}$ + # Channel Gain $Z_{i,f} = |H_{i,f}|^2 = (h_{i,f} + G_{i,R,f})^2$ + # Direct Channel $h_{i,f}$ + # Additionally, $\hat{i} \in \mathcal{I}_c \backslash i$ + + m_if = fading_cfg["nakagami-id"]["m"] + m_if_hat = fading_cfg["nakagami-id"]["m"] + omega_if = fading_cfg["nakagami-id"]["omega"] * db2pow(-1 * pathloss_if) + omega_if_hat = fading_cfg["nakagami-id"]["omega"] * db2pow(-1 * pathloss_if_hat) + + mu_h_if = fun_mu_h_if(1, m_if, omega_if) # 1st moment of h_if + mu_h_if_2 = fun_mu_h_if(2, m_if, omega_if) # 2nd moment of h_if + mu_h_if_hat = fun_mu_h_if(1, m_if_hat, omega_if_hat) # 1st moment of h_if_hat + mu_h_if_hat_2 = fun_mu_h_if(2, m_if_hat, omega_if_hat) # 2nd moment of h_if_hat + + k_h_if = (mu_h_if**2) / (mu_h_if_2 - mu_h_if**2) # Shape parameter of h_if + theta_h_if = (mu_h_if_2 - mu_h_if**2) / mu_h_if # Scale parameter of h_if + + k_h_if_hat = (mu_h_if_hat**2) / ( + mu_h_if_hat_2 - mu_h_if_hat**2 + ) # Shape parameter of h_if_hat + theta_h_if_hat = ( + mu_h_if_hat_2 - mu_h_if_hat**2 + ) / mu_h_if_hat # Scale parameter of h_if_hat + + # Cascaded Channel $G_{i,R,f} = \sqrt{\beta_t} \sum_{k=1}^{K} |{h_{R,f}}||{h_{i,R}}|$ + m_iR = fading_cfg["nakagami-d"]["m"] + m_iR_hat = fading_cfg["nakagami-d"]["m"] + m_Rf = fading_cfg["nakagami-d"]["m"] + omega_iR = fading_cfg["nakagami-d"]["omega"] * db2pow(-1 * pathloss_iR) + omega_iR_hat = fading_cfg["nakagami-d"]["omega"] * db2pow(-1 * pathloss_iR_hat) + omega_Rf = fading_cfg["nakagami-d"]["omega"] * db2pow(-1 * pathloss_Rf) + + mu_G_iRf = fun_mu_G_iRf( + 1, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t + ) # 1st moment of G_iRc + mu_G_iRf_2 = fun_mu_G_iRf( + 2, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t + ) # 2nd moment of G_iRc + + mu_G_iRf_hat = fun_mu_G_iRf( + 1, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t + ) # 1st moment of G_iRc + mu_G_iRf_hat_2 = fun_mu_G_iRf( + 2, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t + ) # 2nd moment of G_iRcarameter of G_iRc + + k_G_iRf = mu_G_iRf**2 / (mu_G_iRf_2 - mu_G_iRf**2) # Shape parameter of G_iRc + theta_G_iRf = (mu_G_iRf_2 - mu_G_iRf**2) / mu_G_iRf # Scale parameter of G_iRc + + k_G_iRf_hat = mu_G_iRf_hat**2 / ( + mu_G_iRf_hat_2 - mu_G_iRf_hat**2 + ) # Shape parameter of G_iRc + theta_G_iRf_hat = ( + mu_G_iRf_hat_2 - mu_G_iRf_hat**2 + ) / mu_G_iRf_hat # Scale parameter of G_iRc + + # Effective Channel Gain $Z_{i,f} = |H_{i,f}|^2 = (h_{i,f} + G_{i,R,f})^2$ + mu_Z_if = ( + fun_mu_G_iRf(2, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t) + + fun_mu_h_if(2, m_if, omega_if) + + ( + 2 + * fun_mu_G_iRf(1, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t) + * fun_mu_h_if(1, m_if, omega_if) + ) + ) + + mu_Z_if_2 = ( + fun_mu_G_iRf(4, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t) + + fun_mu_h_if(4, m_if, omega_if) + + ( + 6 + * fun_mu_G_iRf(2, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t) + * fun_mu_h_if(2, m_if, omega_if) + ) + + ( + 4 + * fun_mu_h_if(3, m_if, omega_if) + * fun_mu_G_iRf(1, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t) + ) + + ( + 4 + * fun_mu_h_if(1, m_if, omega_if) + * fun_mu_G_iRf(3, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t) + ) + ) + + mu_Z_if_hat = ( + fun_mu_G_iRf(2, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t) + + fun_mu_h_if(2, m_if_hat, omega_if_hat) + + ( + 2 + * fun_mu_G_iRf(1, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t) + * fun_mu_h_if(1, m_if_hat, omega_if_hat) + ) + ) + + mu_Z_if_hat_2 = ( + fun_mu_G_iRf(4, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t) + + fun_mu_h_if(4, m_if_hat, omega_if_hat) + + ( + 6 + * fun_mu_G_iRf(2, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t) + * fun_mu_h_if(2, m_if_hat, omega_if_hat) + ) + + ( + 4 + * fun_mu_h_if(3, m_if_hat, omega_if_hat) + * fun_mu_G_iRf(1, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t) + ) + + ( + 4 + * fun_mu_h_if(1, m_if_hat, omega_if_hat) + * fun_mu_G_iRf(3, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t) + ) + ) + + k_Z_if = mu_Z_if**2 / (mu_Z_if_2 - mu_Z_if**2) # Shape parameter of Z_if + theta_Z_if = (mu_Z_if_2 - mu_Z_if**2) / mu_Z_if # Scale parameter of Z_if + + k_Z_if_hat = mu_Z_if_hat**2 / ( + mu_Z_if_hat_2 - mu_Z_if_hat**2 + ) # Shape parameter of Z_if_hat + theta_Z_if_hat = ( + mu_Z_if_hat_2 - mu_Z_if_hat**2 + ) / mu_Z_if_hat # Scale parameter of Z_if_hat + + # $\mathcal{V}_{f}=\zeta_{i,f}\rho|\textbf{H}_{i, f}|^2 + \zeta_{i',f}\rho|\textbf{H}_{i', f}|^2$ + simulation_V_f = zeta_if * rho * H_if**2 + zeta_if_hat * rho * H_if_hat**2 + simulation_V_f_noK = zeta_if * rho * h_if**2 + zeta_if_hat * rho * h_if_hat**2 + + mu_V_f = (zeta_if * rho * mu_Z_if) + ( + zeta_if_hat * rho * mu_Z_if_hat + ) # 1st moment of V_f + + mu_V_f_2 = rho**2 * ( + (zeta_if * k_Z_if * theta_Z_if) ** 2 + + (zeta_if_hat**2 * k_Z_if_hat * (1 + k_Z_if_hat) * theta_Z_if_hat**2) + + ( + zeta_if + * k_Z_if + * theta_Z_if + * (zeta_if * theta_Z_if + 2 * zeta_if_hat * k_Z_if_hat * theta_Z_if_hat) + ) + ) # 2nd moment of V_f + + k_V_f = mu_V_f**2 / (mu_V_f_2 - mu_V_f**2) # Shape parameter of V_f + theta_V_f = (mu_V_f_2 - mu_V_f**2) / mu_V_f # Scale parameter of V_f + + # $\mathcal{B}_{f}=\zeta_{i,c}\rho|\textbf{H}_{i, f}|^2 + \zeta_{i',c}\rho|\textbf{H}_{i', f}|^2 + 1$ + # $\mathcal{B}_{f}=\mathcal{W}_{f} + 1$ + # $\mathcal{W}_{f}=\zeta_{i,c}\rho|\textbf{H}_{i, f}|^2 + \zeta_{i',c}\rho|\textbf{H}_{i', f}|^2$ + + simulation_W_f = zeta_ic * rho * H_if**2 + zeta_ic_hat * rho * H_if_hat**2 + simulation_W_f_noK = zeta_ic * rho * h_if**2 + zeta_ic_hat * rho * h_if_hat**2 + simulation_B_f = simulation_W_f + 1 + simulation_B_f_noK = simulation_W_f_noK + 1 + + mu_W_f = (zeta_ic * rho * mu_Z_if) + ( + zeta_ic_hat * rho * mu_Z_if_hat + ) # 1st moment of W_f + + mu_W_f_2 = rho**2 * ( + (zeta_ic * k_Z_if * theta_Z_if) ** 2 + + (zeta_ic_hat**2 * k_Z_if_hat * (1 + k_Z_if_hat) * theta_Z_if_hat**2) + + ( + zeta_ic + * k_Z_if + * theta_Z_if + * (zeta_ic * theta_Z_if + 2 * zeta_ic_hat * k_Z_if_hat * theta_Z_if_hat) + ) + ) # 2nd moment of W_f + + k_W_f = mu_W_f**2 / (mu_W_f_2 - mu_W_f**2) # Shape parameter of W_f + theta_W_f = (mu_W_f_2 - mu_W_f**2) / mu_W_f # Scale parameter of W_f + + mu_B_f = mu_W_f + 1 # 1st moment of B_f + mu_B_f_2 = mu_W_f_2 + 2 * mu_W_f + 1 # 2nd moment of B_f + + k_B_f = mu_B_f**2 / (mu_B_f_2 - mu_B_f**2) # Shape parameter of B_f + theta_B_f = (mu_B_f_2 - mu_B_f**2) / mu_B_f # Scale parameter of B_f + + simulation_SINR_f = simulation_V_f / simulation_B_f + simulation_SINR_f_noK = simulation_V_f_noK / simulation_B_f_noK + + simulation_SINR_f_nonC_B1 = (rho * h_if**2) / (1 + rho * h_if_hat**2) + simulation_SINR_f_nonC_B2 = (rho * h_if_hat**2) / (1 + rho * h_if**2) + simulation_SINR_f_nonC = ( + zeta_if * simulation_SINR_f_nonC_B1 + zeta_if_hat * simulation_SINR_f_nonC_B2 + ) / ( + zeta_ic * simulation_SINR_f_nonC_B2 + + zeta_ic_hat * simulation_SINR_f_nonC_B1 + + 1 + ) + + ## Ergodic Rates + # $\mathcal{R(k,m,\theta,\Omega)}=\frac{1}{\Omega \log (2) \Gamma (k) \Gamma (m)}{\pi \csc (\pi m) \left(\Omega \Gamma (k+m) B_{\frac{\theta}{\Omega }}(m,-k-m+1)-\theta k \Gamma (k) _3\tilde{F}_2\left(1,1,k+1;2,2-m;\frac{\theta }{\Omega}\right)\right)}$ + + mpm.mp.dps = 25 + + rate_ic = np.zeros_like(rho) + rate_icH = np.zeros_like(rho) + rate_f = np.zeros_like(rho) + rate_ic_u2 = np.zeros_like(rho) + rate_icH_u2 = np.zeros_like(rho) + + for i in range(len(rho)): + rate_ic[i] = rate_meijerg(k_V_ic[i], k_B_ic[i], theta_V_ic[i], theta_B_ic[i]) + rate_icH[i] = rate_meijerg(k_V_ic[i], k_W_ic[i], theta_V_ic[i], theta_W_ic[i]) + rate_icH_u2[i] = rate_meijerg( + k_V_ic_u2[i], k_W_ic_u2[i], theta_V_ic_u2[i], theta_W_ic_u2[i] + ) + rate_ic_u2[i] = rate_meijerg( + k_V_ic_u2[i], k_B_ic_u2[i], theta_V_ic_u2[i], theta_B_ic_u2[i] + ) + rate_f[i] = rate_meijerg(k_V_f[i], k_B_f[i], theta_V_f[i], theta_B_f[i]) + + simulation_rate_ic = np.log2(1 + np.mean(simulation_SINR_ic, axis=0)) - scale_ic + simulation_rate_ic_u2 = ( + np.log2(1 + np.mean(simulation_SINR_ic_u2, axis=0)) - scale_ic + ) + simulation_rate_f = np.log2(1 + np.mean(simulation_SINR_f, axis=0)) - scale_f + + ## Outage Probabilities + # $Pr(\lambda_{f}\lt\lambda_{th_f})=\frac{1}{{k B(k,m)}}{\left(\frac{2^{\lambda_{th} /10} \Omega }{\theta }\right)^k + # {_2F_1\left(k,k+m;k+1;-\frac{2^{\lambda_{th} /10} \Omega }{\theta + # }\right)}}$ + # $Pr(\lambda_{i,c\rightarrow f}\gt\lambda_{th_f}, \lambda_{i,c}\lt\lambda_{th_c})=1-\left(1-\frac{\left(\frac{\theta _{B_{\text{ic}}} + # 2^{\frac{\lambda _{\text{th}_c}}{10}}}{\theta_{V_{\text{ic}}}}\right)^{k_{V_{\text{ic}}}}{_2F_1}\left(k_{V_{\text{ic}}},k_{B_{\text{ic}}}+k_{V_{\text{ic}}};k_{V_{\text{ic}}}+1;-\frac{2^{\frac{\lambda _{\text{th}_c}}{10}} \theta_{B_{\text{ic}}}}{\theta_{V_{\text{ic}}}}\right)}{k_{V_{\text{ic}}}B\left(k_{V_{\text{ic}}},k_{B_{\text{ic}}}\right)}\right) \left(1-\frac{\Gamma\left(k_{B_{\text{icf}}}\right)-\Gamma\left(k_{B_{\text{icf}}}+k_{V_{\text{icf}}}\right)\left(\frac{\theta _{B_{\text{icf}}} 2^{\frac{\lambda_{\text{th}_f}}{10}}}{\theta_{V_{\text{icf}}}}\right)^{k_{V_{\text{icf}}}}{_2\tilde{F}_1}\left(k_{V_{\text{icf}}},k_{B_{\text{icf}}}+k_{V_{\text{icf}}};k_{V_{\text{icf}}}+1;-\frac{2^{\frac{\lambda _{\text{th}_f}}{10}} \theta + # _{B_{\text{icf}}}}{\theta_{V_{\text{icf}}}}\right)}{\Gamma\left(k_{B_{\text{icf}}}\right)}\right)$ + + outage_ic = qfunc( + ( + np.mean( + pow2db( + sp.stats.betaprime.rvs( + k_V_ic, + k_B_ic, + loc=0, + scale=theta_V_ic / theta_B_ic, + size=(N * 20, len(rho)), + ) + ) + - (-N0) + - (-110), + axis=0, + ) + / SIGMA + ) + ) + simulation_outage_ic = qfunc( + (np.mean(pow2db(simulation_SINR_ic) - (-N0) - (-110), axis=0) / SIGMA) + ) + simulation_outage_ic_u2 = qfunc( + (np.mean(pow2db(simulation_SINR_ic_u2) - (-N0) - (-110), axis=0) / SIGMA) + ) + outage_ic_u2 = qfunc( + ( + np.mean( + pow2db( + sp.stats.betaprime.rvs( + k_V_ic_u2, + k_B_ic_u2, + loc=0, + scale=theta_V_ic_u2 / theta_B_ic_u2, + size=(N * 20, len(rho)), + ) + ) + - (-N0) + - (-110), + axis=0, + ) + / SIGMA + ) + ) + outage_f = qfunc( + ( + np.mean( + pow2db( + sp.stats.betaprime.rvs( + k_V_f, + k_B_f, + loc=0, + scale=theta_V_f / theta_B_f, + size=(N * 20, len(rho)), + ) + ) + - (-N0) + - (-110), + axis=0, + ) + / SIGMA + ) + ) + simulation_outage_f = qfunc( + (np.mean(pow2db(simulation_SINR_f) - (-N0) - (-110), axis=0) / SIGMA) + ) + + print(f"{Fore.CYAN}Done!{Style.RESET_ALL}") + + if save_path != "": + if not custom_run: + res_file = os.path.join(save_path, f"results_{link_option}.mat") + else: + res_file = os.path.join(save_path, f"results_{link_option}_custom.mat") + + tx_power = os.path.join(save_path, f"tx_power_dB.mat") + + if not ris_enhanced and not comp_enabled: + simulation_outage_f_nonC = qfunc( + ( + np.mean(pow2db(simulation_SINR_f_nonC) - (-N0) - (-110), axis=0) + / SIGMA + ) + ) + outage_f_nonC = qfunc( + ( + np.mean( + pow2db(simulation_SINR_f_nonC) - scale_f - (-N0) - (-110), + axis=0, + ) + / SIGMA + ) + ) + simulation_rate_f_nonC = ( + np.log2(1 + np.mean(simulation_SINR_f_nonC, axis=0)) - scale_f + ) + rate_f_nonC = np.log2(1 + np.mean(simulation_SINR_f_nonC, axis=0)) + + # Save the results + io.savemat( + res_file, + { + "rate": [ + rate_f_nonC, + simulation_rate_f_nonC, + ], + "outage": [ + outage_f_nonC, + simulation_outage_f_nonC, + ], + }, + ) + elif not ris_enhanced: + simulation_outage_ic_noK = qfunc( + ( + np.mean(pow2db(simulation_SINR_ic_noK) - (-N0) - (-110), axis=0) + / SIGMA + ) + ) + outage_ic_noK = qfunc( + ( + np.mean( + pow2db(simulation_SINR_ic_noK) - scale_f - (-N0) - (-110), + axis=0, + ) + / SIGMA + ) + ) + simulation_outage_ic_u2_noK = qfunc( + ( + np.mean(pow2db(simulation_SINR_ic_u2_noK) - (-N0) - (-110), axis=0) + / SIGMA + ) + ) + outage_ic_u2_noK = qfunc( + ( + np.mean( + pow2db(simulation_SINR_ic_u2_noK) - scale_f - (-N0) - (-110), + axis=0, + ) + / SIGMA + ) + ) + + simulation_outage_f_noK = qfunc( + ( + np.mean(pow2db(simulation_SINR_f_noK) - (-N0) - (-110), axis=0) + / SIGMA + ) + ) + outage_f_noK = qfunc( + ( + np.mean( + pow2db(simulation_SINR_f_noK) - scale_f - (-N0) - (-110), axis=0 + ) + / SIGMA + ) + ) + simulation_rate_ic_noK = ( + np.log2(1 + np.mean(simulation_SINR_ic_noK, axis=0)) - scale_f + ) + simulation_rate_ic_u2_noK = ( + np.log2(1 + np.mean(simulation_SINR_ic_u2_noK, axis=0)) - scale_f + ) + simulation_rate_f_noK = ( + np.log2(1 + np.mean(simulation_SINR_f_noK, axis=0)) - scale_f + ) + rate_ic_noK = np.log2(1 + np.mean(simulation_SINR_ic_noK, axis=0)) + rate_ic_u2_noK = np.log2(1 + np.mean(simulation_SINR_ic_u2_noK, axis=0)) + rate_f_noK = np.log2(1 + np.mean(simulation_SINR_f_noK, axis=0)) + + # Save the results + io.savemat( + res_file, + { + "rate": [ + rate_ic_noK, + rate_ic_u2_noK, + simulation_rate_ic_noK, + simulation_rate_ic_u2_noK, + rate_f_noK, + simulation_rate_f_noK, + ], + "outage": [ + outage_ic_noK, + outage_ic_u2_noK, + outage_f_noK, + simulation_outage_ic_noK, + simulation_outage_ic_u2_noK, + simulation_outage_f_noK, + ], + }, + ) + else: + # Save the results + io.savemat( + res_file, + { + "rate": [ + rate_ic, + rate_ic_u2, + rate_icH, + rate_icH_u2, + simulation_rate_ic, + simulation_rate_ic_u2, + rate_f, + simulation_rate_f, + ], + "outage": [ + outage_ic, + outage_ic_u2, + simulation_outage_ic, + simulation_outage_ic_u2, + outage_f, + simulation_outage_f, + ], + }, + ) + io.savemat(tx_power, {"tx_power": Pt}) + + print(f"{Fore.YELLOW}Results saved to: './{res_file}'{Style.RESET_ALL}\n") + else: + print(f"{Fore.YELLOW}Skipping results.\n") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="Simulate a wireless network with three users and two base stations." + ) + parser.add_argument( + "--realizations", + type=int, + default=10000, + help="Number of channel realizations", + ) + parser.add_argument( + "--setting", + type=str, + default="ris32", + choices=setting.keys(), + help="Link option", + ) + parser.add_argument( + "--custom", + action="store_true", + help="Whether to use custom power allocation", + ) + parser.add_argument( + "--no-save", + action="store_true", + help="Skip saving results to .mat files", + ) + + args = parser.parse_args() + if not args.no_save: + os.makedirs("results", exist_ok=True) + save_path = "results/" + else: + save_path = "" + + main(args.realizations, args.setting, args.custom, save_path) diff --git a/research/statistical_analysis/plot_results.asv b/research/statistical_analysis/plot_results.asv new file mode 100644 index 0000000..ba03a83 --- /dev/null +++ b/research/statistical_analysis/plot_results.asv @@ -0,0 +1,151 @@ +% Define data +clear; +close all; +set(groot,'defaulttextinterpreter','latex'); +set(groot, 'defaultLegendInterpreter','latex'); +set(groot, 'defaultAxesTickLabelInterpreter','latex'); +set(groot,'defaultLineMarkerSize', 6); +Pt = load(".\results\tx_power_dB.mat").tx_power; + +%% Outage +ris = load(".\results\results_ris34.mat"); +noris = load(".\results\results_no_ris.mat"); +noris_nocomp = load(".\results\results_no_ris_non_comp.mat"); + +fig2 = figure(); + +% RIS K = 32 Elements +semilogy(Pt, ris.outage(1, :), 'LineWidth', 1.5, ... + 'LineStyle', '-' ,'Color', 'black'); +hold on; +semilogy(Pt, ris.outage(2, :), 'LineWidth', 1.5, .... + 'LineStyle', '--', 'Color', 'black'); +semilogy(Pt, ris.outage(5, :), 'LineWidth', 1.5, ... + 'LineStyle', '-.', 'Color', 'black'); +% semilogy(Pt, noris.outage(1, :), 'LineWidth', 1.5, ... +% 'LineStyle', '-', 'Color', 'red'); +% semilogy(Pt, noris.outage(2, :), 'LineWidth', 1.5, ... +% 'LineStyle', '-', 'Color', 'red'); +semilogy(Pt, noris.outage(3, :), 'LineWidth', 2, ... + 'LineStyle', '-', 'Color', 'black'); +semilogy(Pt, noris_nocomp.outage(1, :), 'LineWidth', 2, ... + 'LineStyle', '--', 'Color', 'black'); +semilogy(Pt, ris.outage(3, :), 'LineStyle', 'none', ... + 'LineWidth', 1.5, 'Marker', 'x', 'MarkerIndices', ... + 1:5:length(Pt), 'Color', 'red'); +semilogy(Pt, ris.outage(4, :), 'LineStyle', 'none', ... + 'LineWidth', 1.5, 'Marker', 'o', 'MarkerIndices', ... + 1:5:length(Pt), 'Color', 'red'); +semilogy(Pt, ris.outage(6, :), 'LineStyle', 'none', ... + 'LineWidth', 1.5, 'Marker', 's', 'MarkerIndices', ... + 1:5:length(Pt), 'Color', 'red'); +% p1 = semilogy(Pt, noris.outage(4, :), 'LineStyle', 'none', ... +% 'LineWidth', 1.5, 'Marker', 's', 'MarkerIndices', ... +% 1:5:length(Pt), 'Color', 'black'); +% p1.MarkerFaceColor = p1.Color; +% p2 = semilogy(Pt, noris.outage(5, :), 'LineStyle', 'none', ... +% 'LineWidth', 1.5, 'Marker', 'd', 'MarkerIndices', ... +% 1:5:length(Pt), 'Color', 'black'); +% p2.MarkerFaceColor = p2.Color; +p3 = semilogy(Pt, noris.outage(6, :), 'LineStyle', 'none', ... + 'LineWidth', 1.5, 'Marker', 'd', 'MarkerIndices', ... + 1:5:length(Pt), 'Color', 'red'); +p3.MarkerFaceColor = p3.Color; +p4 = semilogy(Pt, noris_nocomp.outage(2, :), 'LineStyle', 'none', ... + 'LineWidth', 1.5, 'Marker', '*', 'MarkerIndices', ... + 1:5:length(Pt), 'Color', 'red'); +p4.MarkerFaceColor = p4.Color; + +% Add labels and legend +xlabel('Transmit power per BS, $P_t$ (dBm)'); +ylim([9e-4 1]) +xlim([-40 0]) +ylabel('Outage probability'); +x1 = 24.5; +x2 = 18; +leg = legend('Analytical, U$_{1,c}$, {$K$ = 32} Elements', ... + 'Analytical, U$_{2,c}$, {$K$ = 32} Elements', ... + 'Analytical, U$_{f}$, {$K$ = 32} Elements', ... + 'Analytical, U$_{f}$, without RIS', ... + 'Analytical, U$_{f}$, Non-CoMP, without RIS', ... + 'Simulation, U$_{1,c}$, {$K$ = 32} Elements', ... + 'Simulation, U$_{2,c}$, {$K$ = 32} Elements', ... + 'Simulation, U$_{f}$, {$K$ = 32} Elements', ... + 'Simulation, U$_{f}$, without RIS', ... + 'Simulation, U$_{f}$, Non-CoMP, without RIS', ... + 'Location', 'southwest', 'FontSize', 10); +leg.ItemTokenSize = [x1, x2]; + +% Add grid +grid('on'); +set(gca, 'GridAlpha', 0.15); + +%% Sum-rate +no_ris = load(".\results\results_no_ris.mat"); +ris32 = load(".\results\results_ris32.mat"); +ris70 = load(".\results\results_ris70.mat"); +custom = load(".\results\results_ris70_oPA.mat"); + +fig5 = figure(); + +% Plot data +plot(Pt, no_ris.sum_rate, 'LineWidth', 1.5, ... + 'Marker', 'v', 'MarkerIndices', 1:4:length(Pt)); +hold on; +plot(Pt, ris32.sum_rate, 'LineWidth', 1.5, ... + 'Marker', 'x', 'MarkerIndices', 1:4:length(Pt)); +plot(Pt, ris70.sum_rate, 'LineWidth', 1.5, ... + 'Marker', 's', 'MarkerIndices', 1:4:length(Pt)); +plot(Pt, custom.sum_rate, 'LineWidth', 1.5, ... + 'Marker', '>', 'MarkerIndices', 1:4:length(Pt)); + +% Add labels and legend +xlabel('Transmit power per BS, $P_t$ (dBm)'); +ylim([2 12.5]) +xlim([-30 -10]) +ylabel('Network sum-rate (bits/s/Hz)'); +legend('Without RIS', '{$K$ = 32} Elements', '{$K$ = 70} Elements', ... + '{$K$ = 70} Elements + Optimal PA', 'Location', 'northwest', 'FontSize', 10); + +% Add grid +grid('on'); +set(gca, 'GridAlpha', 0.15); + +%% Contour Plot +load(".\results\results_exhaustive_es_aa.mat"); +[X,Y] = meshgrid(bs2_assignment, beta_t); +smooth_factor = 9999; % You can adjust this parameter for desired smoothness +sum_rate_smooth = movmean(sum_rate, [52 30]); +[Xq, Yq] = meshgrid(linspace(double(min(X(:))), double(max(X(:))), 26), ... + linspace(min(Y(:)), max(Y(:)), 1000)); +sum_rate_interp = interp2(double(X), double(Y), sum_rate_smooth, Xq, Yq, "linear"); +sum_rate_smooth = smoothdata(sum_rate_interp, 'loess', smooth_factor); +fig6 = figure(6); +[c, b] = contour(Xq, Yq, sum_rate_smooth, 10, 'LineWidth', 2); +shading interp; +% colormap jet +h = colorbar; +h.FontSize = 10; +h.TickLabelInterpreter = "latex"; +h.Ticks = 8:0.1:8.5; +h.TickLabels = {"8", "8.1", "8.2", "8.3", "8.4", "8.5"}; +% h.Label.String = "Network Sum-Rate (bits/s/Hz)"; +clabel(c, b, 'manual', 'backgroundcolor', 'w'); +xlabel('Element splitting ratio $\textbf{K}_A^1$ / $\textbf{K}_A^2$') +ylabel('Amplitude adjustments ratio $\beta_{t} / \beta_{r}$') +xtick = linspace(0, 70, 8); +ytick = linspace(0, 1, 11); % changed from 12 to 11 +legend('Network sum-rate (bits/s/Hz)', 'Location', 'northwest', 'FontSize', 10) +set(gca, 'XTickLabel', {"0/70", "10/60", "20/50", "30/40", "40/30", ... + "50/20", "60/10", "70/0"}, 'XTick', xtick); +set(gca,'YTickLabel',{"0/1", "0.1/0.9", "0.2/0.8", "0.3/0.7", ... + "0.4/0.6", "0.5/0.5", "0.6/0.4", "0.7/0.3", "0.8/0.2", "0.9/0.1", "1/0"}, ... + 'YTick', ytick) + +%% Export Graphics +% exportgraphics(fig1, './resources/links.pdf') +% exportgraphics(fig2, './resources/outage.pdf') +% exportgraphics(fig3, './resources/se_vs_ee.pdf') +% exportgraphics(fig4, './resources/rates.pdf') +% exportgraphics(fig5, './resources/sumrate.pdf') +% exportgraphics(fig6, './resources/dynamic.pdf') \ No newline at end of file diff --git a/research/statistical_analysis/plot_results.m b/research/statistical_analysis/plot_results.m new file mode 100644 index 0000000..eb55506 --- /dev/null +++ b/research/statistical_analysis/plot_results.m @@ -0,0 +1,153 @@ +% Define data +clear; +close all; +set(groot,'defaulttextinterpreter','latex'); +set(groot, 'defaultLegendInterpreter','latex'); +set(groot, 'defaultAxesTickLabelInterpreter','latex'); +set(groot,'defaultLineMarkerSize', 6); +Pt = load(".\results\tx_power_dB.mat").tx_power; + +%% Outage +ris = load(".\results\results_ris34.mat"); +noris = load(".\results\results_no_ris.mat"); +noris_nocomp = load(".\results\results_no_ris_non_comp.mat"); + +fig1 = figure(); + +% RIS K = 32 Elements +semilogy(Pt, ris.outage(1, :), 'LineWidth', 1.5, ... + 'LineStyle', '-' ,'Color', 'black'); +hold on; +semilogy(Pt, ris.outage(2, :), 'LineWidth', 1.5, .... + 'LineStyle', '--', 'Color', 'black'); +semilogy(Pt, ris.outage(5, :), 'LineWidth', 1.5, ... + 'LineStyle', '-.', 'Color', 'black'); +% semilogy(Pt, noris.outage(1, :), 'LineWidth', 1.5, ... +% 'LineStyle', '-', 'Color', 'red'); +% semilogy(Pt, noris.outage(2, :), 'LineWidth', 1.5, ... +% 'LineStyle', '-', 'Color', 'red'); +semilogy(Pt, noris.outage(3, :), 'LineWidth', 2, ... + 'LineStyle', ':', 'Color', 'black'); +semilogy(Pt, noris_nocomp.outage(1, :), 'LineWidth', 2, ... + 'LineStyle', '--', 'Color', 'black'); +p1 = semilogy(Pt, ris.outage(3, :), 'LineStyle', 'none', ... + 'LineWidth', 1.5, 'Marker', 'x', 'MarkerIndices', ... + 1:5:length(Pt), 'Color', 'red'); +p1.MarkerSize = 8.5; +semilogy(Pt, ris.outage(4, :), 'LineStyle', 'none', ... + 'LineWidth', 1.5, 'Marker', 'o', 'MarkerIndices', ... + 1:5:length(Pt), 'Color', 'red'); +semilogy(Pt, ris.outage(6, :), 'LineStyle', 'none', ... + 'LineWidth', 1.5, 'Marker', 's', 'MarkerIndices', ... + 1:5:length(Pt), 'Color', 'red'); +% p1 = semilogy(Pt, noris.outage(4, :), 'LineStyle', 'none', ... +% 'LineWidth', 1.5, 'Marker', 's', 'MarkerIndices', ... +% 1:5:length(Pt), 'Color', 'black'); +% p1.MarkerFaceColor = p1.Color; +% p2 = semilogy(Pt, noris.outage(5, :), 'LineStyle', 'none', ... +% 'LineWidth', 1.5, 'Marker', 'd', 'MarkerIndices', ... +% 1:5:length(Pt), 'Color', 'black'); +% p2.MarkerFaceColor = p2.Color; +p3 = semilogy(Pt, noris.outage(6, :), 'LineStyle', 'none', ... + 'LineWidth', 1.5, 'Marker', '^', 'MarkerIndices', ... + 1:5:length(Pt), 'Color', 'red'); +% p3.MarkerFaceColor = p3.Color; +p4 = semilogy(Pt, noris_nocomp.outage(2, :), 'LineStyle', 'none', ... + 'LineWidth', 1.5, 'Marker', '*', 'MarkerIndices', ... + 1:5:length(Pt), 'Color', 'red'); +% p4.MarkerFaceColor = p4.Color; +p4.MarkerSize = 7; + +% Add labels and legend +xlabel('Transmit power per BS, $P_t$ (dBm)'); +ylim([9e-4 1]) +xlim([-40 0]) +ylabel('Outage probability'); +x1 = 24.5; +x2 = 18; +leg = legend('Analytical, U$_{1,c}$, {$K$ = 34} Elements', ... + 'Analytical, U$_{2,c}$, {$K$ = 34} Elements', ... + 'Analytical, U$_{f}$, {$K$ = 34} Elements', ... + 'Analytical, U$_{f}$, without RIS', ... + 'Analytical, U$_{f}$, Non-CoMP, without RIS', ... + 'Simulation, U$_{1,c}$, {$K$ = 34} Elements', ... + 'Simulation, U$_{2,c}$, {$K$ = 34} Elements', ... + 'Simulation, U$_{f}$, {$K$ = 34} Elements', ... + 'Simulation, U$_{f}$, without RIS', ... + 'Simulation, U$_{f}$, Non-CoMP, without RIS', ... + 'Location', 'southwest', 'FontSize', 10); +leg.ItemTokenSize = [x1, x2]; +leg.FontSize = 9; + +% Add grid +grid('on'); +set(gca, 'GridAlpha', 0.15); + +%% Sum-rate +no_ris = load(".\results\results_no_ris.mat"); +ris32 = load(".\results\results_ris32.mat"); +ris70 = load(".\results\results_ris70.mat"); +custom = load(".\results\results_ris70_oPA.mat"); + +fig5 = figure(); + +% Plot data +plot(Pt, no_ris.sum_rate, 'LineWidth', 1.5, ... + 'Marker', 'v', 'MarkerIndices', 1:4:length(Pt)); +hold on; +plot(Pt, ris32.sum_rate, 'LineWidth', 1.5, ... + 'Marker', 'x', 'MarkerIndices', 1:4:length(Pt)); +plot(Pt, ris70.sum_rate, 'LineWidth', 1.5, ... + 'Marker', 's', 'MarkerIndices', 1:4:length(Pt)); +plot(Pt, custom.sum_rate, 'LineWidth', 1.5, ... + 'Marker', '>', 'MarkerIndices', 1:4:length(Pt)); + +% Add labels and legend +xlabel('Transmit power per BS, $P_t$ (dBm)'); +ylim([2 12.5]) +xlim([-30 -10]) +ylabel('Network sum-rate (bits/s/Hz)'); +legend('Without RIS', '{$K$ = 34} Elements', '{$K$ = 70} Elements', ... + '{$K$ = 70} Elements + Optimal PA', 'Location', 'northwest', 'FontSize', 10); + +% Add grid +grid('on'); +set(gca, 'GridAlpha', 0.15); + +%% Contour Plot +load(".\results\results_exhaustive_es_aa.mat"); +[X,Y] = meshgrid(bs2_assignment, beta_t); +smooth_factor = 9999; % You can adjust this parameter for desired smoothness +sum_rate_smooth = movmean(sum_rate, [52 30]); +[Xq, Yq] = meshgrid(linspace(double(min(X(:))), double(max(X(:))), 26), ... + linspace(min(Y(:)), max(Y(:)), 1000)); +sum_rate_interp = interp2(double(X), double(Y), sum_rate_smooth, Xq, Yq, "linear"); +sum_rate_smooth = smoothdata(sum_rate_interp, 'loess', smooth_factor); +fig6 = figure(6); +[c, b] = contour(Xq, Yq, sum_rate_smooth, 10, 'LineWidth', 2); +shading interp; +% colormap jet +h = colorbar; +h.FontSize = 10; +h.TickLabelInterpreter = "latex"; +h.Ticks = 8:0.1:8.5; +h.TickLabels = {"8", "8.1", "8.2", "8.3", "8.4", "8.5"}; +% h.Label.String = "Network Sum-Rate (bits/s/Hz)"; +clabel(c, b, 'manual', 'backgroundcolor', 'w'); +xlabel('Element splitting ratio $\textbf{K}_A^1$ / $\textbf{K}_A^2$') +ylabel('Amplitude adjustments ratio $\beta_{t} / \beta_{r}$') +xtick = linspace(0, 70, 8); +ytick = linspace(0, 1, 11); % changed from 12 to 11 +legend('Network sum-rate (bits/s/Hz)', 'Location', 'northwest', 'FontSize', 10) +set(gca, 'XTickLabel', {"0/70", "10/60", "20/50", "30/40", "40/30", ... + "50/20", "60/10", "70/0"}, 'XTick', xtick); +set(gca,'YTickLabel',{"0/1", "0.1/0.9", "0.2/0.8", "0.3/0.7", ... + "0.4/0.6", "0.5/0.5", "0.6/0.4", "0.7/0.3", "0.8/0.2", "0.9/0.1", "1/0"}, ... + 'YTick', ytick) + +%% Export Graphics +exportgraphics(fig1, './resources/outage.pdf') +% exportgraphics(fig3, './resources/se_vs_ee.pdf') +% exportgraphics(fig4, './resources/rates.pdf') +% exportgraphics(fig5, './resources/sumrate.pdf') +% exportgraphics(fig6, './resources/dynamic.pdf') \ No newline at end of file diff --git a/research/statistical_analysis/run.sh b/research/statistical_analysis/run.sh new file mode 100644 index 0000000..f09db15 --- /dev/null +++ b/research/statistical_analysis/run.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +echo -e "\033[34mRunning all settings as defined in config...\n\033[0m" + +# Determine the current directory +current_dir=$(basename $(pwd)) + +# Import the setting dictionary based on the current directory +from="from config import setting" + +# Get all the keys in the setting dictionary +keys=$(python -c "$from; print('\n'.join(setting.keys()))") + +# Iterate over the keys and run main.py with the key as an argument +for key in $keys +do + python main.py --setting $key +done \ No newline at end of file diff --git a/research/statistical_analysis/verifications.ipynb b/research/statistical_analysis/verifications.ipynb new file mode 100644 index 0000000..36f7b50 --- /dev/null +++ b/research/statistical_analysis/verifications.ipynb @@ -0,0 +1,1667 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Statistical Analysis STAR-RIS Assisted CoMP-NOMA" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import scipy as sp\n", + "import mpmath as mpm\n", + "from scipy.special import gamma\n", + "import matplotlib.pyplot as plt\n", + "import simcomm.core.propagation as prop\n", + "from simcomm.core import Nakagami, get_rvs\n", + "from simcomm.utils import dbm2pow, db2pow, pow2db, pow2dbm, get_distance\n", + "from simcomm.core.propagation import get_noise_power, get_pathloss" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "environment = {\n", + " \"positions\": {\n", + " \"BS1\": [-50, 0, 25], # BS1 position\n", + " \"BS2\": [50, 0, 25], # BS2 position\n", + " \"RIS\": [0, 25, 5], # RIS position\n", + " \"Uf\": [0, 35, 1], # Uf position\n", + " \"U1c\": [-40, 18, 1], # U1c position\n", + " \"U2c\": [30, 22, 1], # U2c position\n", + " },\n", + " \"fading\": {\n", + " \"rayleigh\": {\"type\": \"rayleigh\", \"sigma\": 1}, # Rayleigh fading\n", + " \"ricianE\": {\n", + " \"type\": \"rician\",\n", + " \"K\": 5,\n", + " \"sigma\": 1,\n", + " }, # Rician fading for edge users\n", + " \"ricianC\": {\n", + " \"type\": \"rician\",\n", + " \"K\": 3,\n", + " \"sigma\": 1,\n", + " }, # Rician fading for center users\n", + " \"nakagami-1\": {\"type\": \"nakagami\", \"m\": 1, \"omega\": 1},\n", + " \"nakagami-2\": {\"type\": \"nakagami\", \"m\": 2, \"omega\": 1},\n", + " \"nakagami-i\": {\"type\": \"nakagami\", \"m\": 1, \"omega\": 1},\n", + " },\n", + " \"pathloss\": {\n", + " \"center\": {\"type\": \"free-space\", \"alpha\": 3, \"p0\": 30}, # Center users\n", + " \"ris\": {\"type\": \"free-space\", \"alpha\": 3, \"p0\": 30}, # BS to RIS\n", + " \"risC\": {\"type\": \"free-space\", \"alpha\": 2.7, \"p0\": 30}, # RIS to center users\n", + " \"risE\": {\"type\": \"free-space\", \"alpha\": 2.3, \"p0\": 30}, # RIS to edge user\n", + " \"edge\": {\"type\": \"free-space\", \"alpha\": 3.5, \"p0\": 30}, # Edge users\n", + " \"inter\": {\"type\": \"free-space\", \"alpha\": 3.5, \"p0\": 30}, # Interference links\n", + " },\n", + "}\n", + "\n", + "setting = {\n", + " \"ris32\": {\n", + " \"ris_enhanced\": True, # RIS with 32 elements\n", + " \"ris_elements\": 32,\n", + " \"comp_enabled\": True, # CoMP enabled\n", + " },\n", + " \"no_ris\": {\n", + " \"ris_enhanced\": False, # No RIS\n", + " \"comp_enabled\": True, # CoMP enabled\"\n", + " },\n", + " \"ris70\": {\n", + " \"ris_enhanced\": True, # RIS with 70 elements\n", + " \"ris_elements\": 70,\n", + " \"comp_enabled\": True, # CoMP enabled\n", + " },\n", + " \"no_ris_non_comp\": {\n", + " \"ris_enhanced\": False, # No RIS\n", + " \"comp_enabled\": False, # CoMP disabled\n", + " },\n", + "}\n", + "\n", + "constants = {\n", + " \"BANDWIDTH\": 1e6, # Bandwidth in Hz\n", + " \"TEMP\": 300, # Temperature in Kelvin\n", + " \"FREQ\": 2.4e9, # Frequency of carrier signal in Hz\n", + " \"SIGMA\": 6.32, # Shadowing standard deviation in dB\n", + "}\n", + "\n", + "# Load the environment\n", + "pathloss_cfg = environment[\"pathloss\"]\n", + "fading_cfg = environment[\"fading\"]\n", + "positions = environment[\"positions\"]\n", + "\n", + "# Additional parameters\n", + "BANDWIDTH = constants[\"BANDWIDTH\"] # Bandwidth in Hz\n", + "TEMP = constants[\"TEMP\"] # Temperature in Kelvin\n", + "FREQ = constants[\"FREQ\"] # Frequency of carrier signal in Hz\n", + "SIGMA = constants[\"SIGMA\"] # Shadowing standard deviation in dB" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# Positions\n", + "pos_BS1 = positions[\"BS1\"]\n", + "pos_BS2 = positions[\"BS2\"]\n", + "pos_RIS = positions[\"RIS\"]\n", + "pos_U1c = positions[\"U1c\"]\n", + "pos_U2c = positions[\"U2c\"]\n", + "pos_Uf = positions[\"Uf\"]\n", + "\n", + "# Distance parameters\n", + "## BS1 specific distances\n", + "distance_iR = get_distance(pos_BS1, pos_RIS, 3)\n", + "distance_Rc = get_distance(pos_RIS, pos_U1c, 3)\n", + "distance_ic = get_distance(pos_BS1, pos_U1c, 3)\n", + "distance_if = get_distance(pos_BS1, pos_Uf, 3)\n", + "\n", + "## BS2 specific distances\n", + "distance_iR_hat = get_distance(pos_BS2, pos_RIS, 3)\n", + "distance_if_hat = get_distance(pos_BS2, pos_Uf, 3)\n", + "\n", + "## Common distances\n", + "distance_Rf = get_distance(pos_RIS, pos_U1c, 3)\n", + "distance_ic_prime = get_distance(pos_BS2, pos_U1c, 3)\n", + "\n", + "# Simulation parameters\n", + "K = 70\n", + "N = 10000\n", + "beta_r = 0.5\n", + "beta_t = 0.5\n", + "shape = (N, 1)\n", + "shape_ris = (K // 2, N, 1)\n", + "\n", + "# Additional parameters\n", + "BANDWIDTH = constants[\"BANDWIDTH\"] # Bandwidth in Hz\n", + "TEMP = constants[\"TEMP\"] # Temperature in Kelvin\n", + "FREQ = constants[\"FREQ\"] # Frequency of carrier signal in Hz\n", + "SIGMA = constants[\"SIGMA\"] # Shadowing standard deviation in dB\n", + "\n", + "Pt = 25 # Transmit power in dBm\n", + "Pt_lin = dbm2pow(Pt) # Transmit power in linear scale\n", + "N0 = get_noise_power(BANDWIDTH, TEMP, 12) # Noise power in dBm\n", + "N0_lin = dbm2pow(N0) # Noise power in linear scale\n", + "\n", + "# Power allocation\n", + "zeta_ic = 0.3\n", + "zeta_if = 0.7\n", + "zeta_ic_hat = 0.3\n", + "zeta_if_hat = 0.7\n", + "\n", + "rho = Pt_lin / N0_lin # SNR" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Simulation" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "pathloss_iR = get_pathloss(**pathloss_cfg[\"ris\"], distance=distance_iR, frequency=FREQ)\n", + "pathloss_Rc = get_pathloss(**pathloss_cfg[\"risC\"], distance=distance_Rc, frequency=FREQ)\n", + "pathloss_ic = get_pathloss(\n", + " **pathloss_cfg[\"center\"], distance=distance_ic, frequency=FREQ\n", + ")\n", + "pathloss_ic_prime = get_pathloss(\n", + " **pathloss_cfg[\"inter\"], distance=distance_ic_prime, frequency=FREQ\n", + ")\n", + "pathloss_if = get_pathloss(**pathloss_cfg[\"edge\"], distance=distance_if, frequency=FREQ)\n", + "pathloss_iR_hat = get_pathloss(\n", + " **pathloss_cfg[\"ris\"], distance=distance_iR_hat, frequency=FREQ\n", + ")\n", + "pathloss_if_hat = get_pathloss(\n", + " **pathloss_cfg[\"edge\"], distance=distance_if_hat, frequency=FREQ\n", + ")\n", + "pathloss_Rf = get_pathloss(**pathloss_cfg[\"risE\"], distance=distance_Rf, frequency=FREQ)\n", + "# np.sqrt(db2pow(-1 * self.pathloss))\n", + "\n", + "samples_iR = get_rvs(**{\"type\": \"nakagami\", \"m\": 2, \"omega\": 1}, shape=shape_ris)\n", + "samples_Rc = get_rvs(**{\"type\": \"nakagami\", \"m\": 2, \"omega\": 1}, shape=shape_ris)\n", + "samples_ic = get_rvs(**{\"type\": \"nakagami\", \"m\": 1, \"omega\": 1}, shape=shape)\n", + "samples_ic_prime = get_rvs(**{\"type\": \"nakagami\", \"m\": 1, \"omega\": 1}, shape=shape)\n", + "\n", + "samples_if = get_rvs(**{\"type\": \"nakagami\", \"m\": 1, \"omega\": 1}, shape=shape)\n", + "samples_iR_hat = get_rvs(**{\"type\": \"nakagami\", \"m\": 2, \"omega\": 1}, shape=shape_ris)\n", + "samples_if_hat = get_rvs(**{\"type\": \"nakagami\", \"m\": 1, \"omega\": 1}, shape=shape)\n", + "samples_Rf = get_rvs(**{\"type\": \"nakagami\", \"m\": 2, \"omega\": 1}, shape=shape_ris)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "h_iR = np.abs(np.sqrt(db2pow(-1 * pathloss_iR)) * samples_iR)\n", + "h_Rc = np.abs(np.sqrt(db2pow(-1 * pathloss_Rc)) * samples_Rc)\n", + "h_ic = np.abs(np.sqrt(db2pow(-1 * pathloss_ic)) * samples_ic)\n", + "h_ic_prime = np.abs(np.sqrt(db2pow(-1 * pathloss_ic_prime)) * samples_ic_prime)\n", + "h_if = np.abs(np.sqrt(db2pow(-1 * pathloss_if)) * samples_if)\n", + "h_iR_hat = np.abs(np.sqrt(db2pow(-1 * pathloss_iR_hat)) * samples_iR_hat)\n", + "h_if_hat = np.abs(np.sqrt(db2pow(-1 * pathloss_if_hat)) * samples_if_hat)\n", + "h_Rf = np.abs(np.sqrt(db2pow(-1 * pathloss_Rf)) * samples_Rf)\n", + "\n", + "cascaded_ic = np.sum(h_iR * h_Rc, axis=0) * np.sqrt(beta_r)\n", + "H_ic = cascaded_ic + h_ic\n", + "\n", + "cascaded_if = np.sum(h_iR * h_Rf, axis=0) * np.sqrt(beta_t)\n", + "cascaded_if_hat = np.sum(h_iR_hat * h_Rf, axis=0) * np.sqrt(beta_t)\n", + "H_if = cascaded_if + h_if\n", + "H_if_hat = cascaded_if_hat + h_if_hat" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## SINR PDFs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### PDF of SINR $\\gamma_{i,c\\rightarrow f}$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Effective Channel $\\textbf{H}_{i, c}=\\textbf{h}_{i, c}+\\textbf{h}_{R, c}^H \\mathbf{\\Theta_r}\\textbf{h}_{i, R}$\n", + "\n", + "Channel Gain $Z_{i,c} = |H_{i,c}|^2 = (h_{i,c} + G_{i,R,c})^2$\n", + "\n", + "Direct Channel $h_{i,c}$" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "m_ic = 1\n", + "omega_ic = 1 * db2pow(-1 * pathloss_ic)\n", + "omega_ic_prime = 1 * db2pow(-1 * pathloss_ic_prime)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def fun_mu_h_ic(p, m_ic, omega_ic):\n", + " return (gamma(m_ic + p / 2) / gamma(m_ic)) * (m_ic / omega_ic) ** (-p / 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "mu_h_ic = fun_mu_h_ic(1, m_ic, omega_ic) # 1st moment of h_ic\n", + "mu_h_ic_2 = fun_mu_h_ic(2, m_ic, omega_ic) # 2nd moment of h_ic\n", + "\n", + "k_h_ic = (mu_h_ic**2) / (mu_h_ic_2 - mu_h_ic**2) # Shape parameter of h_ic\n", + "theta_h_ic = (mu_h_ic_2 - mu_h_ic**2) / mu_h_ic # Scale parameter of h_ic" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAHGCAYAAABXQNCQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABYYklEQVR4nO3dd3hUZcL+8e+ZmRQSEjqB0HsHaSIdQRREFFEBRUEsuyquBd19xdfGrmss66vuzwXFVdRFQVFAbCgrTQWUDgLSkd4hCS3JzJzfH5MEQwKkP2dm7s91nWtKJjP3DIHcPOc5z7Fs27YRERERcTCX6QAiIiIiF6PCIiIiIo6nwiIiIiKOp8IiIiIijqfCIiIiIo6nwiIiIiKOp8IiIiIijqfCIiIiIo6nwiIiIiKOp8IiIiIijqfCIoVy/fXXU6ZMGY4fP37exwwfPpyIiAgOHDhQLK/57rvvYlkWO3bsyHH/Rx99RIsWLShTpgyWZbFq1arzPra4LFq0iGeeeSbX+y/p1y0ueX1mF7JmzRpGjRpFvXr1iI6OpmzZsrRr144XX3yRo0ePlk7o33nmmWewLIvDhw9f9LEm/0yycuZXfj/ngrz/YFCQP6Pk5GRcLhevvvpqiecSZ1FhkUK58847OXPmDB9++GGeX09OTmbGjBlcc801JCQkFMtrDhgwgMWLF1O9evXs+w4dOsRtt91GgwYNmD17NosXL6Zx48Z5PrY4LVq0iHHjxuUqLCX9usXhfJ/Z+bz11lu0b9+epUuX8uc//5nZs2czY8YMbrrpJt544w3uvPPOUkxfcMHwZwLB/zmXlmXLlmHbNpdeeqnpKFLKPKYDSHDq378/iYmJvPPOO9x33325vj5lyhROnz5dLP/Injp1ipiYGKpUqUKVKlVyfG3Tpk1kZGRw66230rNnz+z7sx5f2vLK6DTn+8zysnjxYu6991769u3LzJkziYqKyv5a3759eeSRR5g9e3ZJRy6SYPgzCYXPubQsW7aMiIgI2rVrZzqKlDKNsEihuN1uRo4cyfLly1m7dm2ur0+aNInq1avTv3//7Ps2b97MLbfcQtWqVYmKiqJZs2b861//yvF9WUPdK1as4MYbb6RChQo0aNAAyD1sfPvtt9OtWzcAhg4dimVZ9OrVK8/HAvz666/cfPPNJCQkEBUVRe3atRkxYgRpaWkAbNmyhVGjRtGoUSNiYmKoUaMGAwcOzPX+nnnmGf785z8DUK9ePSzLwrIs5s+ff96h7R9++IE+ffoQFxdHTEwMXbp04csvv8zzva9bt46bb76ZcuXKkZCQwB133EFycnI+/lQu/joX+szy8txzz2FZFhMnTszxSzRLZGQk1157baHf65o1a7jpppsoV64cFStWZMyYMXi9XjZu3Ei/fv2Ii4ujbt26vPjii3nm27VrF4MHDyY+Pp5y5cpx6623cujQoRyPOffPpKCfc35+bgG+/PJLLrnkEqKioqhXrx7/+Mc/zvu5nqswnzPAgQMHLvgeCvIznd/PpKQ+v/xaunQprVq1YsmSJfTp04eyZctSrVo1/vrXvxb6OSU4qLBIod1xxx1YlsU777yT4/7169fz888/M3LkSNxud/Z9HTt25JdffuHll1/miy++YMCAATzwwAOMGzcu13MPHjyYhg0bMm3aNN544408X//JJ5/M/ofvueeeY/HixYwfPz7Px65evZqOHTuyZMkS/vrXv/L111+TlJREWloa6enpAOzdu5dKlSrx/PPPM3v2bP71r3/h8Xjo1KkTGzduzH6uu+66iz/96U8ATJ8+ncWLF7N48eLz/o9vwYIF9O7dm+TkZN5++22mTJlCXFwcAwcO5KOPPsr1+BtuuIHGjRvz6aef8thjj/Hhhx/y8MMP5/ncBX2dgnxmPp+PuXPn0r59e2rVqnXR1y/Mex0yZAht2rTh008/5e677+aVV17h4YcfZtCgQQwYMIAZM2bQu3dv/ud//ofp06fn+v7rr7+ehg0b8sknn/DMM88wc+ZMrrrqKjIyMi6aNT+fc35/br/77juuu+464uLimDp1Ki+99BIff/wxkyZNumiOwnzO+X0P+f2ZLshnUpDHFvTvfX4sW7aMQ4cOMWbMGEaOHMmsWbPo0aMHTz/9NAsWLCjUc0qQsEWKoGfPnnblypXt9PT07PseeeQRG7A3bdqUfd9VV11l16xZ005OTs7x/ffff78dHR1tHz161LZt23766adtwH7qqadyvdakSZNswN6+fXv2ffPmzbMBe9q0aRd8bO/eve3y5cvbBw8ezPd783q9dnp6ut2oUSP74YcfzvG1l156KVeW82W87LLL7KpVq9qpqak5nrtly5Z2zZo1bb/fn+O9v/jiizme87777rOjo6OzH3c++X2d831m59q/f78N2MOGDbvg4wqTIeu9vvzyyzm+/5JLLrEBe/r06dn3ZWRk2FWqVLEHDx6cfV/W95/75/LBBx/YgD158uTs+879MynI55zfn9tOnTrZiYmJ9unTp7Mfk5KSYlesWNG+2D+zhfmcC/uzcr6f6YI8X0l8fnn9vcnLoUOHbMDu2LGjfebMmez7d+/ebQP2+PHjbdu27TNnztgJCQn28ePHL/h8Elw0wiJFcuedd3L48GFmzZoFgNfrZfLkyXTv3p1GjRoBcObMGb777juuv/56YmJi8Hq92dvVV1/NmTNnWLJkSY7nveGGG4ot46lTp1iwYAFDhgy54FwGr9fLc889R/PmzYmMjMTj8RAZGcnmzZvZsGFDoV775MmT/PTTT9x4442ULVs2+363281tt93G7t27c/1P99yh/9atW3PmzBkOHjxYrK9T3AqT4Zprrslxu1mzZliWlWNXosfjoWHDhvz222+5XnP48OE5bg8ZMgSPx8O8efMumvdin3N+f25PnjzJ0qVLGTx4MNHR0dnPlzWyVJIu9h4K+jNdkJ+94vr8CmLp0qUAPPvsszl2nR05cgSAxMREAKKioti/fz/lypUr0POLs4VcYVm4cCEDBw4kMTERy7KYOXNmgb5/48aNXH755SQkJBAdHU39+vV54okn8jXEHI5uvPFGypUrlz30/dVXX3HgwIEck22PHDmC1+vl//2//0dERESO7eqrrwbIdXhmcR7RcezYMXw+HzVr1rzg48aMGcOTTz7JoEGD+Pzzz/npp59YunQpbdq04fTp04V+bdu283w/Wf+4Zv1jm6VSpUo5bmf9w3yhDIV5nYupXLkyMTExbN++PV+PL0yGihUr5rgdGRlJTExMjl/8WfefOXMm1/NWq1Ytx22Px0OlSpXy9V4v9jnn9+f22LFj+P3+XFnyypeXgn7OBXkPBf2ZLsjPXnF9fgWxbNkyypQpQ+/evXPcv2LFCgDatm0LwGuvvcZdd92Vr+f897//TatWrYiLi6NVq1Z5FmNxhpA7SujkyZO0adOGUaNGFep/6REREYwYMYJ27dpRvnx5Vq9ezd13343f7+e5554rgcTBrUyZMtx888289dZb7Nu3j3feeYe4uDhuuumm7MdUqFAh+3/Zo0ePzvN56tWrl+N2QdauuJiKFSvidrvZvXv3BR83efJkRowYkevP+fDhw5QvX75Qr12hQgVcLhf79u3L9bW9e/cCgV9YRVUSr+N2u+nTpw9ff/01u3fvvmjhK633+nv79++nRo0a2be9Xi9HjhzJ9cu0MPL7cxsdHY1lWezfvz/PfBdT0M+5IEriZzq/CvP3/mKWLVtGmzZt8Hg8ue6vXLkytWvXBgLr2bRu3fqiz/fss8/y2Wef8fHHH9O4cWN+/PFHxx9RFs5CboSlf//+PPvsswwePDjPr6enp/OXv/yFGjVqEBsbS6dOnZg/f3721+vXr8+oUaNo06YNderU4dprr2X48OF8//33pfQOgs+dd96Jz+fjpZde4quvvmLYsGHExMRkfz0mJobLL7+clStX0rp1azp06JBrK45fMOdTpkwZevbsybRp0y74PzrLsnIdofHll1+yZ8+eXI/Nz6gHkP0zNn369ByP9fv9TJ48mZo1a15wDZT8KqnXGTt2LLZtc/fdd2dPTv69jIwMPv/88xLNcCEffPBBjtsff/wxXq/3gkc+5Vd+f25jY2O59NJLmT59eo5RoNTU1OzP5mIK8jkXREF+potbSfy9X7p0Ke3bt891//Lly3Pcn5/CcuDAAV566SU+/PBDmjVrhtvtpkePHjn+7RJnCbkRlosZNWoUO3bsYOrUqSQmJjJjxgz69evH2rVrs+dc/N6WLVuYPXv2eQuQQIcOHWjdujWvvvoqtm3nufbKa6+9Rrdu3ejevTv33nsvdevWJTU1lS1btvD5558zd+7cEs34f//3f3Tr1o1OnTrx2GOP0bBhQw4cOMCsWbN48803iYuL45prruHdd9+ladOmtG7dmuXLl/PSSy/l+T/eVq1aZb+vkSNHEhERQZMmTfJ87aSkJPr27cvll1/Oo48+SmRkJOPHj+eXX35hypQpxTaaVBKv07lzZyZMmMB9991H+/btuffee2nRogUZGRmsXLmSiRMn0rJly+y5GqX1XrNMnz4dj8dD3759WbduHU8++SRt2rRhyJAhxfL8+f25/dvf/ka/fv2y10zx+Xy88MILxMbG5msl4IJ+zvlVkJ/pklCcf+/37dvHvn376NChQ477vV4vq1evZsyYMUCgIK9fv/6ihWXOnDlcdtllef67L84UVoVl69atTJkyhd27d2fvU3/00UeZPXs2kyZNyjFs2qVLF1asWEFaWhp/+MMfdIz/Rdx55508+OCDNG/enE6dOuX6evPmzVmxYgV/+9vfeOKJJzh48CDly5enUaNG2fuzS1KbNm34+eefefrppxk7diypqalUq1aN3r17ExkZCQT+cY2IiCApKYkTJ07Qrl07pk+fzhNPPJHr+Xr16sXYsWN57733eOutt/D7/eed6NmzZ0/mzp3L008/ze23347f76dNmzbMmjUr16TToiip17n77ru59NJLeeWVV3jhhRfYv38/ERERNG7cmFtuuYX777+/xDOcz/Tp03nmmWeYMGEClmUxcOBAXn311ew/06LK789t1oJvTzzxBEOHDqVatWrcd999nD59Ot+H7xbkc86vgvxMl4Ti/HufNeH23BGW9evXc/r06ez7t2zZQrly5S46enPkyJES3y0mxcuybds2HaKkWJbFjBkzGDRoEADTpk1jyJAhxMbG5nhcWloagwcPzrFOxK5du0hNTWX16tX8+c9/5oEHHuAvf/lLacYXEZEC+uSTT/j3v/+dY2Xg22+/HQgsIphl/vz5DBkyhB9++IGGDRuyZs0aqlSpkmNOlDhLWI2w+P1+3G43y5cvz17QLMvvD8MEshdwat68OT6fjz/84Q888sgjub5PREScY+3atbl2B+3evZuhQ4fmuK9Xr1488MAD9OrVi9TUVJo2bcoXX3xRmlGlgMKqsLRt2xafz8fBgwfp3r17vr/Ptm0yMjII4cEoEZGQcO4uOK/Xy969e7NHWX7viSeeKLXdY1J0IVdYTpw4wZYtW7Jvb9++nVWrVlGxYkUaN27M8OHDGTFiBC+//DJt27bl8OHDzJ07l1atWnH11VfzwQcfEBERQatWrYiKimL58uWMHTuWoUOH5jqUTkREnM3j8bB+/XrTMaQYhNwclvnz53P55Zfnun/kyJG8++67ZGRk8Oyzz/L++++zZ88eKlWqROfOnRk3bhytWrXio48+4sUXX2TTpk3Ytk2dOnW49dZbefjhh3MtZiUiIiKlI+QKi4iIiISekFs4TkREREJPSEzK8Pv97N27l7i4uGJfmEpERERKhm3bpKamkpiYiMt14TGUkCgse/fuzT4MWURERILLrl27LroCc0gUlri4OCDwhuPj4w2nERERkfxISUmhVq1a2b/HLyQkCkvWbqD4+HgVFhERkSCTn+kcmnQrIiIijqfCIiIiIo6nwiIiIiKOp8IiIiIijqfCIiIiIo6nwiIiIiKOp8Ii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t7Vr15qO5HjHjh2ja9euRERE8PXXX7N+/XpefvnlAq1Sr8Oaz6NTp060a9eOCRMmZN/XrFkzBg0aRFJSksFkwcOyLGbMmMGgQYNMRwk6hw4domrVqixYsIAePXqYjhNUKlasyEsvvcSdd95pOorjnThxgnbt2jF+/HieffZZLrnkEl599VXTsRztmWeeYebMmaxatcp0lKDy2GOP8eOPPxZpT4VGWPKQnp7O8uXLufLKK3Pcf+WVV7Jo0SJDqSScJCcnA4FfvpI/Pp+PqVOncvLkSTp37mw6TlAYPXo0AwYM4IorrjAdJahs3ryZxMRE6tWrx7Bhw9i2bZvpSI43a9YsOnTowE033UTVqlVp27Ytb731VoGeQ4UlD4cPH8bn8+U6+WJCQkKukzSKFDfbthkzZgzdunWjZcuWpuM43tq1aylbtixRUVHcc889zJgxg+bNm5uO5XhTp05lxYoVGjEuoE6dOvH+++/zzTff8NZbb7F//366dOnCkSNHTEdztG3btjFhwgQaNWrEN998wz333MMDDzzA+++/n+/ncMTS/E5lWVaO27Zt57pPpLjdf//9rFmzhh9++MF0lKDQpEkTVq1axfHjx/n0008ZOXIkCxYsUGm5gF27dvHggw/y7bffEh0dbTpOUOnfv3/29VatWtG5c2caNGjAe++9x5gxYwwmcza/30+HDh147rnnAGjbti3r1q1jwoQJjBgxIl/PoRGWPFSuXBm3251rNOXgwYO5Rl1EitOf/vQnZs2axbx586hZs6bpOEEhMjKShg0b0qFDB5KSkmjTpg2vvfaa6ViOtnz5cg4ePEj79u3xeDx4PB4WLFjAP//5TzweDz6fz3TEoBEbG0urVq3YvHmz6SiOVr169Vz/iWjWrFmBDmRRYclDZGQk7du3Z86cOTnunzNnDl26dDGUSkKZbdvcf//9TJ8+nblz51KvXj3TkYKWbdukpaWZjuFoffr0Ye3ataxatSp769ChA8OHD2fVqlW43W7TEYNGWloaGzZsoHr16qajOFrXrl1zLdWwadOmAp3kWLuEzmPMmDHcdtttdOjQgc6dOzNx4kR27tzJPffcYzqao504cYItW7Zk396+fTurVq2iYsWK1K5d22AyZxs9ejQffvghn332GXFxcdmje+XKlaNMmTKG0znX448/Tv/+/alVqxapqalMnTqV+fPnM3v2bNPRHC0uLi7X/KjY2FgqVaqkeVMX8eijjzJw4EBq167NwYMHefbZZ0lJSWHkyJGmoznaww8/TJcuXXjuuecYMmQIP//8MxMnTmTixIn5fxJbzutf//qXXadOHTsyMtJu166dvWDBAtORHG/evHk2kGsbOXKk6WiOltdnBtiTJk0yHc3R7rjjjuy/o1WqVLH79Oljf/vtt6ZjBaWePXvaDz74oOkYjjd06FC7evXqdkREhJ2YmGgPHjzYXrdunelYQeHzzz+3W7ZsaUdFRdlNmza1J06cWKDv1zosIiIi4niawyIiIiKOp8IiIiIijqfCIiIiIo6nwiIiIiKOp8IiIiIijqfCIiIiIo6nwiIiIiKOp8IiIiISRhYuXMjAgQNJTEzEsixmzpxZaq+dlJSEZVk89NBDBf5eFRYREZEwcvLkSdq0acPrr79eqq+7dOlSJk6cSOvWrQv1/SosIiIiYaR///48++yzDB48OM+vp6en85e//IUaNWoQGxtLp06dmD9/fpFe88SJEwwfPpy33nqLChUqFOo5VFhEREQk26hRo/jxxx+ZOnUqa9as4aabbqJfv35s3ry50M85evRoBgwYwBVXXFHo51BhERFHmjJlCtHR0ezZsyf7vrvuuovWrVuTnJxsMJlI6Nq6dStTpkxh2rRpdO/enQYNGvDoo4/SrVs3Jk2aVKjnnDp1KitWrCApKalI2VRYRMSRhg0bRpMmTbL/kRs3bhzffPMNX3/9NeXKlTOcTiQ0rVixAtu2ady4MWXLls3eFixYwNatWwHYsWMHlmVdcLv//vsB2LVrFw8++CCTJ08mOjq6SNk8RX53IiIlwLIs/v73v3PjjTeSmJjIa6+9xvfff0+NGjVMRxMJWX6/H7fbzfLly3G73Tm+VrZsWQBq1KjBhg0bLvg8WfNUli9fzsGDB2nfvn3213w+HwsXLuT1118nLS0t1+ucjwqLiDjWNddcQ/PmzRk3bhzffvstLVq0MB1JJKS1bdsWn8/HwYMH6d69e56PiYiIoGnTpvl6vj59+rB27doc940aNYqmTZvyP//zP/kuK6DCIiIO9s033/Drr7/i8/lISEgwHUckJJw4cYItW7Zk396+fTurVq2iYsWKNG7cmOHDhzNixAhefvll2rZty+HDh5k7dy6tWrXi6quvLtBrxcXF0bJlyxz3xcbGUqlSpVz3X4zmsIiII61YsYKbbrqJN998k6uuuoonn3zSdCSRkLBs2TLatm1L27ZtARgzZgxt27blqaeeAmDSpEmMGDGCRx55hCZNmnDttdfy008/UatWLZOxsWzbto0mEBE5x44dO+jcuTN/+tOfePzxx1m+fDkdO3Zk6dKlOfaFi0j4UGEREUc5evQoXbt2pUePHrz55pvZ91933XWkpaUxe/Zsg+lExBQVFhEREXE8zWERERERx1NhEREREcdTYRERERHHU2ERERERx1NhEREREcdTYRERERHHU2ERERERx1NhEREREcdTYRERERHHU2ERERERx1NhEREREcf7/+ByTcya3rdZAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x = np.linspace(0, np.max(h_ic), N)\n", + "plt.hist(h_ic, bins=50, density=True)\n", + "plt.plot(\n", + " x,\n", + " sp.stats.gamma.pdf(x, k_h_ic, scale=theta_h_ic),\n", + ")\n", + "plt.title(r\"Verification of Combined Channel $h_{i,c}$\")\n", + "plt.xlabel(r\"$x$\")\n", + "plt.ylabel(r\"PDF $f(x)$\")\n", + "plt.ticklabel_format(axis=\"both\", style=\"sci\", scilimits=(0, 0))\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cascaded Channel $G_{i,R,c} = \\sqrt{\\beta_r} \\sum_{k=1}^{K} |{h_{R,c}}||{h_{i,R}}|$" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "m_iR = 2\n", + "m_Rc = 2\n", + "omega_iR = 1 * db2pow(-1 * pathloss_iR)\n", + "omega_Rc = 1 * db2pow(-1 * pathloss_Rc)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "def fun_mu_h_iR(p, m_iR, omega_iR):\n", + " return gamma(m_iR + p / 2) / gamma(m_iR) * (m_iR / omega_iR) ** (-p / 2)\n", + "\n", + "\n", + "def fun_mu_h_Rc(p, m_Rc, omega_Rc):\n", + " return gamma(m_Rc + p / 2) / gamma(m_Rc) * (m_Rc / omega_Rc) ** (-p / 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# mu_G_iRc = (\n", + "# K * fun_mu_h_iR(1, m_iR, omega_iR) * fun_mu_h_Rc(1, m_Rc, omega_Rc)\n", + "# ) # 1st moment of G_iRc\n", + "# sigma2_G_iRc = K * (\n", + "# omega_iR * omega_Rc\n", + "# - (fun_mu_h_iR(1, m_iR, omega_iR) ** 2 * fun_mu_h_Rc(1, m_Rc, omega_Rc) ** 2)\n", + "# ) # Variance of G_iRc (2nd moment - 1st moment squared)\n", + "# mu_G_iRc_2 = sigma2_G_iRc + mu_G_iRc**2 # 2nd moment of G_iRc\n", + "\n", + "# k_G_iRc = mu_G_iRc**2 / (mu_G_iRc_2 - mu_G_iRc**2) # Shape parameter of G_iRc\n", + "# theta_G_iRc = (mu_G_iRc_2 - mu_G_iRc**2) / mu_G_iRc # Scale parameter of G_iRc" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "def fun_mu_G_iRc(p, m_iR, omega_iR, m_Rc, omega_Rc, K, beta_r):\n", + " mu = (gamma(m_iR + (1 / 2)) * gamma(m_Rc + (1 / 2))) / (\n", + " gamma(m_iR) * gamma(m_Rc) * (m_iR * m_Rc) ** (1 / 2)\n", + " )\n", + " k = mu**2 / (1 - mu**2)\n", + " theta = (1 - mu**2) / mu\n", + "\n", + " return (\n", + " gamma((K * k) + p) * (np.sqrt(omega_iR * omega_Rc * beta_r) * theta) ** p\n", + " ) / gamma(K * k)\n", + "\n", + "\n", + "mu_G_iRc = fun_mu_G_iRc(\n", + " 1, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r\n", + ") # 1st moment of G_iRc\n", + "mu_G_iRc_2 = fun_mu_G_iRc(\n", + " 2, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r\n", + ") # 2nd moment of G_iRc\n", + "\n", + "k_G_iRc = mu_G_iRc**2 / (mu_G_iRc_2 - mu_G_iRc**2) # Shape parameter of G_iRc\n", + "theta_G_iRc = (mu_G_iRc_2 - mu_G_iRc**2) / mu_G_iRc # Scale parameter of G_iRc" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjkAAAHGCAYAAACWx5o8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABWzklEQVR4nO3deXxU1f3/8dfNDoSENYGwBUH2HRRBUcSCImJxA6sVUPQrVWsVtQVtVdQarcVivwouCPz8qohYwAVEqMoioEIk7LJDWBJCWJIQyDZzfn9MMhKTQJZJ7izv5+Mxj5m5c5fPTIbkzTnnnmsZYwwiIiIifibI7gJEREREqoNCjoiIiPglhRwRERHxSwo5IiIi4pcUckRERMQvKeSIiIiIX1LIEREREb+kkCMiIiJ+SSFHRERE/JJCjoiIiPglhRzxqJtuuolatWpx6tSpMte58847CQ0N5ejRox455uzZs7Esi/379xdbPnfuXDp37kytWrWwLIukpKQy1/WUNWvW8Oyzz5Z4/9V9XE8p7TM7n02bNnH33XfTunVrIiIiiIyMpFevXvzjH//gxIkTNVP0OZ599lksyyI9Pf2C69r5Mymqs7zK+zlX5P37gsr8jDZv3sy9995LmzZtiIiIoHbt2nTo0IH777+fH374ofqKFa+kkCMeNW7cOHJycvjwww9LfT0jI4MFCxZwww03EBsb65FjDhs2jLVr19K0aVP3smPHjnHXXXfRpk0blixZwtq1a2nXrl2p63rSmjVrmDx5comQU93H9YSyPrOyvPPOO/Tu3Zt169bxxBNPsGTJEhYsWMBtt93Gm2++ybhx42qw+orzhZ8J+P7nXJP+9a9/0atXL5KSkpgwYQKLFi1i4cKF3H333XzzzTdceeWVFBQU2F2m1CQj4kEFBQUmLi7O9O7du9TXp0+fbgDz+eefV/lY2dnZZb723XffGcDMnTu3ysepiFdeecUAZt++fTV6XE+oyGe2Zs0aExwcbK677jqTk5NT4vXc3Fzz6aefVkeZ5/XMM88YwBw7dqzGj10RRXVeSEU/Z195/+U1a9ascv97mjJligHME088YRwOR4nX8/LyzL///e9qqFK8mUKOeNykSZMMYDZt2lTitUsvvdQ0bdrUFBQUuJft3LnT/O53vzONGzc2YWFhpkOHDub1118vtl3RL+/ExERzyy23mHr16pkmTZoYY0r+IhwzZowBit2uuuqqUtc1xpjt27eb22+/3cTExJiwsDDTokULc9ddd7n/qOzatcuMHTvWtG3b1tSqVcvExcWZG264ocT7K6rx17dvv/22zF/Wq1atMoMGDTKRkZGmVq1apl+/fuaLL74odb9btmwxt99+u4mKijIxMTHm7rvvNqdOnSrXz+RCxznfZ1aaG264wYSEhJjk5ORyHb+i73Xjxo3m1ltvNVFRUaZ+/frm0UcfNfn5+ebnn3821157rYmMjDStWrUyL7/8cqnb//TTT+amm24ydevWNVFRUebOO+80aWlpxdb99c+kop9zeb63xhjzxRdfmO7du5uwsDATHx9vXnnllXKHnIp+zuV9DxX9TpfnM6mOz6+8IWf79u0mLCzMjBgxolyfkwQOdVeJx91zzz1YlsXMmTOLLd+2bRs//vgjY8aMITg42L3skksuYcuWLUyZMoUvvviCYcOG8fDDDzN58uQS+7755ptp27Yt8+bN48033yz1+H/729944403AHjxxRdZu3Yt06ZNK3XdjRs3cskll/D999/z3HPP8eWXX5KQkEBubi55eXkAHDlyhIYNG/LSSy+xZMkS3njjDUJCQujbty87duxw7+vee+/lj3/8IwDz589n7dq1rF27ll69epV67BUrVjBo0CAyMjJ49913mTNnDnXr1mX48OHMnTu3xPq33HIL7dq14z//+Q8TJ07kww8/5NFHHy113xU9TkU+M4fDwTfffEPv3r1p0aLFBY9fmfc6cuRIunfvzn/+8x/uu+8+/vWvf/Hoo48yYsQIhg0bxoIFCxg0aBB/+ctfmD9/fontb7rpJtq2bcsnn3zCs88+y8KFC7n22mvJz8+/YK3l+ZzL+739+uuv+e1vf0vdunX56KOPeOWVV/j444+ZNWvWBeuozOdc3vdQ3u90RT6Tiqxb0X/3F/Liiy+Sn5/PP//5zwpvK37O7pQl/umqq64yjRo1Mnl5ee5ljz32mAHMzp073cuuvfZa07x5c5ORkVFs+4ceeshERESYEydOGGN++V/i008/XeJYpf1v79tvvzWAmTdv3nnXHTRokKlXr16J/+WfT0FBgcnLyzMXX3yxefTRR4u9VlZ3VWk1XnbZZSYmJsZkZWUV23eXLl1M8+bNjdPpLPbe//GPfxTb5wMPPGAiIiLc65WlvMcp6zP7tdTUVAOY22+//bzrVaaGovc6ZcqUYtv36NHDAGb+/PnuZfn5+aZx48bm5ptvdi8r2v7XP5cPPvjAAOb99993LyurJac8n3N5v7d9+/Y1cXFx5uzZs+51MjMzTYMGDS7YklOZz7my35WyvtMV2V91fH7lacnJyckxkZGRpl+/fiVeczgcJj8/3307txsrJyfHxMbGnrc1dN++fQYwderUMbVq1TIdO3Y0X3/9dZnri/dRS45Ui3HjxpGens5nn30GQEFBAe+//z4DBgzg4osvBiAnJ4evv/6am266idq1a1NQUOC+XX/99eTk5PD9998X2+8tt9zisRrPnDnDihUrGDlyJI0bNy5zvYKCAl588UU6depEWFgYISEhhIWFsWvXLrZv316pY2dnZ/PDDz9w6623EhkZ6V4eHBzMXXfdxaFDh0r8j/rGG28s9rxbt27k5OSQlpbm0eN4WmVquOGGG4o979ixI5ZlMXToUPeykJAQ2rZty4EDB0oc88477yz2fOTIkYSEhPDtt99esN4Lfc7l/d5mZ2ezbt06br75ZiIiItz7K2rBqk4Xeg8V/U5X5Lvnqc+vvA4cOMDp06e55JJLSrzWvXt3QkND3beEhAT3a+Hh4aSmphIdHV3mvjdu3EinTp04ffo02dnZ3Hrrrdx3333lrk3sp5ADrFy5kuHDhxMXF4dlWSxcuLBC2xedtvnrW506daqnYB9w6623Eh0d7W6WX7x4MUePHi12Jsjx48cpKCjgf//3f4v9IgoNDeX6668HKHEqrCfPhDl58iQOh4PmzZufd70JEybwt7/9jREjRvD555/zww8/sG7dOrp3787Zs2crfWxjTKnvJy4uDnB9Pudq2LBhsefh4eEA562hMse5kEaNGlG7dm327dtXrvUrU0ODBg2KPQ8LC6N27drFwkLR8pycnBL7bdKkSbHnISEhNGzYsFzv9UKfc3m/tydPnsTpdJaopbT6SlPRz7ki76Gi3+mKfPc89fmVV9G6UVFRJV577733WLduHc8//zwAffv2db/22muvce+995533xs3bqRHjx4AWJbFFVdcUe7aZsyYQdeuXalbty5du3YtNYxL9QuxuwBvkJ2dTffu3bn77rsr1VLw+OOPM378+GLLrrnmmlL/ZxEoatWqxe9+9zveeecdUlJSmDlzJnXr1uW2225zr1O/fn33/+Yf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RH5FIUdERET8kiYDFBEREb8UsGNynE4nR44coW7duh6fiExERESqhzGGrKws4uLiCAo6f1tNwIacI0eO0KJFC7vLEBERkUo4ePDgBWfpDtiQU7duXcD1IZV29VoRERHxPpmZmbRo0cL9d/x8AjbkFHVRRUVFKeSIiIj4mPIMNdHAYxEREfFLCjkiIiLilxRyRERExC8p5IiIiIhfUsgRERERv6SQIyIiIn5JIUdERET8kkKOiIiI+CWFHBEREfFLCjkiIiLilxRyRERExC8p5IiIiIhfUsgRERERv6SQIyIiIn5JIUdERET8UojdBYiIiMRPXFTs+f6XhtlUifgTteSIiIiIX1LIEREREb+kkCMiIiJ+SSFHRERE/JJCjoiIiPglhRwRERHxS14RclauXMnw4cOJi4vDsiwWLlxY7m1Xr15NSEgIPXr0qLb6RERExPd4RcjJzs6me/fuvP766xXaLiMjg9GjR3PNNddUU2UiIiLiq7xiMsChQ4cydOjQCm93//33c8cddxAcHFyh1h8REak5muhP7OIVLTmVMWvWLPbs2cMzzzxTrvVzc3PJzMwsdhMRkZrV3DoGO5ZAykYwxu5yxM95RUtORe3atYuJEyeyatUqQkLK9xYSEhKYPHlyNVcmIiKliSKbF0JncmPwWphTuLBpd7jpLYjpaGtt4r98riXH4XBwxx13MHnyZNq1a1fu7SZNmkRGRob7dvDgwWqsUkREitTlDB+FvcCNwWtxGgtiOkNobVdrzozBcCTJ7hLFT/lcS05WVhbr169nw4YNPPTQQwA4nU6MMYSEhLB06VIGDRpUYrvw8HDCw8NrulwRkcBmDK+GTqNT0AGOmWjuyXuCzx/4I5w+Bh/fBclr4cNR1OdZThJld7XiZ3yuJScqKorNmzeTlJTkvo0fP5727duTlJRE37597S5RRESKbJzD4OCfyDUhjM37C5vNRa7lkY3hjrnQqD2cTuX50Nm2lin+yStack6fPs3u3bvdz/ft20dSUhINGjSgZcuWTJo0icOHD/Pee+8RFBREly5dim0fExNDREREieUiImKjvGxY9jQAUwtuZauJL/56RDTc/Ba8cw03BH/P/xUM5gej8TniOV7RkrN+/Xp69uxJz549AZgwYQI9e/bk6add/zhSUlJITk62s0QREamoH96C7GMccMbwjuP60teJ6wm9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7YsvvqBNmzZcddVVFdqPQo6IiIhUyd13383q1av56KOP2LRpE7fddhvXXXcdu3btqvK+8/LyeP/997nnnnuwLKtC2yrkiIjfmDNnDhERERw+fNi97N5776Vbt25kZGTYWJmI/9qzZw9z5sxh3rx5DBgwgDZt2vD4449zxRVXMGvWrCrvf+HChZw6dapSF+tVyBERv3H77bfTvn17EhISAJg8eTJfffUVX375JdHR0TZXJ+KffvrpJ4wxtGvXjsjISPdtxYoV7NmzB4D9+/eXOpD43NtDDz1U6v7fffddhg4dSlxcXIVrC6nSOxMR8SKWZfH3v/+dW2+9lbi4OF577TVWrVpFs2bN7C5NxG85nU6Cg4NJTEwkODi42GuRkZEANGvWjO3bt593P/Xr1y+x7MCBA/z3v/9l/vz5lapNIUdE/MoNN9xAp06dmDx5MkuXLqVz5852lyTi13r27InD4SAtLY0BAwaUuk5oaCgdOnSo8L5nzZpFTEwMw4YNq1RtCjki4le++uorfv75ZxwOB7GxsXaXI+IXTp8+ze7du93P9+3bR1JSEg0aNKBdu3bceeedjB49milTptCzZ0/S09P55ptv6Nq1K9dff32ljul0Opk1axZjxowhJKRyccUyxphKbSki4mV++uknBg4cyBtvvMFHH31E7dq1mTdvnt1lifi85cuXc/XVV5dYPmbMGGbPnk1+fj4vvPAC7733HocPH6Zhw4b069ePyZMn07Vr10odc+nSpVx77bXs2LGDdu3aVWofCjki4hf2799Pv379+OMf/8iTTz5JYmIil1xyCevWraN37952lyciNlDIERGfd+LECS6//HKuvPJK3nrrLffy3/72t+Tm5rJkyRIbqxMRuyjkiIiIiF/SPDkiIiLilxRyRERExC8p5IiIiIhfUsgRERERv6SQIyIiIn5JIUdERET8kkKOiIiI+CWFHBEREfFLCjkiIiLilxRyRERExC8p5IiIiIhf+v/hkw/D0ZrrVgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x = np.linspace(0, np.max(cascaded_ic), N)\n", + "plt.hist(cascaded_ic, bins=50, density=True)\n", + "plt.plot(\n", + " x,\n", + " sp.stats.gamma.pdf(x, k_G_iRc, scale=theta_G_iRc),\n", + ")\n", + "plt.title(r\"Verification of Combined Channel $G_{i,R,c}$\")\n", + "plt.xlabel(r\"$x$\")\n", + "plt.ylabel(r\"PDF $f(x)$\")\n", + "plt.ticklabel_format(axis=\"both\", style=\"sci\", scilimits=(0, 0))\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Effective Channel Gain $Z_{i,c} = |H_{i,c}|^2 = (h_{i,c} + G_{i,R,c})^2$" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "mu_Z_ic = (\n", + " fun_mu_G_iRc(2, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r)\n", + " + fun_mu_h_ic(2, m_ic, omega_ic)\n", + " + (\n", + " 2\n", + " * fun_mu_G_iRc(1, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r)\n", + " * fun_mu_h_ic(1, m_ic, omega_ic)\n", + " )\n", + ")\n", + "\n", + "mu_Z_ic_2 = (\n", + " fun_mu_G_iRc(4, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r)\n", + " + fun_mu_h_ic(4, m_ic, omega_ic)\n", + " + (\n", + " 6\n", + " * fun_mu_G_iRc(2, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r)\n", + " * fun_mu_h_ic(2, m_ic, omega_ic)\n", + " )\n", + " + (\n", + " 4\n", + " * fun_mu_h_ic(3, m_ic, omega_ic)\n", + " * fun_mu_G_iRc(1, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r)\n", + " )\n", + " + (\n", + " 4\n", + " * fun_mu_h_ic(1, m_ic, omega_ic)\n", + " * fun_mu_G_iRc(3, m_iR, omega_iR, m_Rc, omega_Rc, K // 2, beta_r)\n", + " )\n", + ")\n", + "\n", + "k_Z_ic = mu_Z_ic**2 / (mu_Z_ic_2 - mu_Z_ic**2) # Shape parameter of Z_ic\n", + "theta_Z_ic = (mu_Z_ic_2 - mu_Z_ic**2) / mu_Z_ic # Scale parameter of Z_ic" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjkAAAHGCAYAAACWx5o8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA2XklEQVR4nO3deXxU9b3/8feYjbCFRRISQECEAGG5kCBE2XNlp0VxobUSFr1Ftosp1x+h99bS2kartrGVRQWSBw8uSCEBUVBJJYAItoBBakHAyiYkIC4BURISvr8/uJkyZLLMZJIM37yej8d5wDnne875nDPfwDvfOXPGYYwxAgAAsMwttV0AAABAdSDkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXJQaffee69CQ0P1zTfflNnm4YcfVlBQkM6ePeuTY6anp8vhcOj48eMuy9esWaOYmBiFhobK4XBo//79Zbb1lV27dumXv/xlqfOv7uP6irtr5k7J+ZQ1bdu2rcL9VvZYVeGvr8eBAwc0efJktW/fXvXq1VPDhg3Vu3dv/e53v9NXX33lbPfLX/5SDodD58+fr5U6fc3T637gwAFNnTpVHTp0UGhoqEJDQ9WxY0f99Kc/1d69e2ukhspq0aJFuT8TDodDkydP9ukx4RuBtV0Abh5Tp07Vhg0btGrVKk2fPr3U+vz8fK1fv15jxoxRRESET445evRo7d69W5GRkc5lX3zxhR555BGNGDFCixYtUkhIiDp16qRWrVqVautLu3bt0oIFCzRp0iQ1adKk3Br9TVnXrDxpaWnq3LlzqeVdu3Ytd79Nmzb1+Fje8MfX49VXX9X06dMVHR2t//qv/1LXrl115coV7d27V0uWLNHu3bu1fv36Gq/L37z88suaOXOmoqOj9Z//+Z+KiYmRw+HQoUOHtHr1avXp00effvqpOnTo4NF+q+O1Ly4u1htvvOF23YkTJzRlyhRdvXqVkOOvDFBJRUVFJioqysTGxrpdv3jxYiPJvPHGG1U+1qVLl8pct3PnTiPJrFmzpsrH8cRzzz1nJJljx47V6HF9wZNrlpaWZiSZPXv2eLXfmnp9/O312LVrlwkICDAjRowwly9fLrW+oKDAvP766875p556ykgyX3zxRU2WWW1K+k1Fr8fOnTvNLbfcYsaOHWsKCgrctvnzn/9sTp8+XQ1V+s7JkydN+/btTUhIiHn77bdruxyUgZADjyQnJxtJ5sCBA6XW3XnnnSYyMtIUFRU5lx05csT86Ec/Mi1atDDBwcGmc+fO5qWXXnLZruQf+3379pnx48ebJk2amJYtWxpjSv/DmZiYaCS5TIMGDXLb1hhjDh06ZCZMmGDCw8NNcHCwadOmjXnkkUec/wkdPXrUTJo0ydxxxx0mNDTUREVFmTFjxpQ6v5Iab5yys7PL/Mf9vffeM0OHDjUNGzY0oaGhJj4+3rz55ptu9/vxxx+bCRMmmMaNG5vw8HAzefJk880331TqNanoOOVdM3cqG3Lc7bdt27blHqsy/aFEea+dJ6/H+vXrjSTzl7/8pdQxFi1aZCSZjz76yKsarzdmzBgTGBhoTp48WWFbYzx77T3tpxXt09N+V5lrUtmQM2rUKBMUFGTOnDlTqevkyfm7q8EXP2M3+vzzz02HDh1MSEiI2bx5s1f7QM3gnhx4ZMqUKXI4HFq+fLnL8oMHD+pvf/ubEhMTFRAQ4FzWp08fffzxx3rhhRf05ptvavTo0Zo9e7YWLFhQat/33Xef7rjjDq1du1ZLlixxe/z/+Z//0cKFCyVJv/3tb7V7924tWrTIbduPPvpIffr00QcffKBf/epXeuutt5SSkqKCggIVFhZKks6cOaPmzZvrmWee0dtvv62FCxcqMDBQffv21eHDh537evTRRzVr1ixJUmZmpnbv3q3du3erd+/ebo+9fft2DR06VPn5+Vq2bJlWr16tRo0aaezYsVqzZk2p9uPHj1enTp2UkZGhefPmadWqVXriiSfc7tvT43hyza5XXFysoqIil6m4uNi53t1+N23aVOaxPOkPFb12nrweY8aMUXh4uNLS0kqtS09PV+/evdWjRw+Pa7zxWm3dulWxsbFq06ZNhdf2epV57SvbTz3ZZ2XbeXtN3CkuLlZ2drbi4uI8ekvJ0/N3x9ufMXe1DBkyRKdOndK6des0cuRIj/eBGlTbKQs3n0GDBplbb73VFBYWOpf97Gc/M5LMkSNHnMuGDx9uWrdubfLz8122nzlzpqlXr5756quvjDH/+k3rF7/4RaljufvNLDs720gya9euLbft0KFDTZMmTcy5c+cqfW5FRUWmsLDQdOzY0TzxxBMu68p6e8Rdjf369TPh4eHm4sWLLvvu1q2bad26tbl69arLuf/ud79z2ef06dNNvXr1nO3KUtnjlHXN3Ck5H3dTQECAS1t3+y3rWJXtD8ZU7rXz5PVISkoyoaGhLr+5Hzx40Egyf/rTn7yq8Xp5eXlGkpkwYUKZ9d6oKq99Wf20svv05NiVvSaVGckp7zoVFRWZK1euOCdvzr+8kRxvf8aul5uba6Kjo01QUJDLW48lLl++bCIiIrweIYLvMZIDj02dOlXnz5/Xxo0bJUlFRUVauXKlBgwYoI4dO0qSLl++rHfffVf33nuv6tev7zIaMGrUKF2+fFkffPCBy37Hjx/vsxq/++47bd++XQ8++KBatGhRZruioiL99re/VdeuXRUcHKzAwEAFBwfr6NGjOnTokFfHvnTpkv7617/q/vvvV8OGDZ3LAwIC9Mgjj+jzzz8v9dvnD37wA5f5Hj166PLlyzp37pxPj+OJFStWaM+ePS7TX//6V6/25Ul/qOxr54kpU6bo+++/dxlFS0tLU0hIiH784x97XKMvVea197SfVrY/VdSuJq9JbGysgoKCnNMLL7zg9fm7483P2PXOnj2roUOH6rPPPtOf//znUvuTpJCQEOXl5SksLKxS+0T1I+RI2rFjh8aOHauoqCg5HA5t2LDBo+1LPgp649SgQYPqKbiW3X///QoLC3MO/2/evFlnz57V1KlTnW2+/PJLFRUV6U9/+pPLP1xBQUEaNWqUJJX66KwvPxHx9ddfq7i4WK1bty63XVJSkv7nf/5H48aN0xtvvKG//vWv2rNnj3r27Knvv//e62MbY9yeT1RUlKRr1+d6zZs3d5kPCQmRpHJr8OY4nujSpYvi4uJcptjYWK/25Ul/qOxr54mYmBj16dPH2WeLi4u1cuVK/fCHP1SzZs08rvFGt956q+rXr69jx455XFtlXntP+2ll+1NF7apyTdy59dZbFRoaqhMnTpRat2rVKu3Zs8f5y9P1fPFz6s3PWIkvvvhCCQkJOnr0qF577TWNGzfObbsXX3xRjz76aIX7W7p0qbp3765GjRqpe/fubq8HfIOPkOvab8Q9e/bU5MmTvRpNmDt3rqZNm+ayLCEhQX369PFViX4lNDRUP/rRj/Tqq68qNzdXy5cvV6NGjfTAAw842zRt2tQ5ojBjxgy3+2nfvr3LvMPh8FmNzZo1U0BAgD7//PNy261cuVITJ07Ub3/7W5fl58+fd/lYsieaNm2qW265Rbm5uaXWnTlzRtK1f+yrqqaO4wue9IfKvnaemjx5sqZPn65Dhw7ps88+U25ursvHfr3psyUCAgKUkJCgt956S59//rlPA5pUPf20MqpyTdwJCAjQ0KFDtWXLFuXm5roE9JJHE7h7xk1tnX/JMYYOHarDhw9r1apVuu+++8pse+DAAef9XWV5+umn9frrr+vPf/6zOnXqpPfff99nI5YojZEcSSNHjtTTTz9dZuctLCzUk08+qVatWqlBgwbq27evywPRGjZsqJYtWzqns2fP6uDBgy4jG7aZOnWqiouL9dxzz2nz5s2aMGGC6tev71xfv359DRkyRDk5OerRo0epEYG4uLhSv1n5UmhoqAYNGqS1a9eW+5umw+Fw/kZXYtOmTTp9+nSptpX9za+kj2RmZrq0vXr1qlauXKnWrVv75LkxNXUcX/CkP1T2tfPkN3FJ+tGPfqR69eopPT1d6enpatWqlYYNG+ZVje4kJyfLGKPHHnvMeWP79a5cuVLm81Yq4kk/9aXq+DlOTk5WcXGxpk2bpitXrlRqm9o6/y+//FL//u//rkOHDmnlypUuv8i5U1HIOXv2rJ577jmtWrVKXbp0UUBAgAYOHOjybyd8i5GcSpg8ebKOHz+u1157TVFRUVq/fr1GjBihv//97857UK63dOlSderUSQMGDKiFamtGXFycevToodTUVBlj3Aa6F198Uf3799eAAQP0+OOPq127drp48aI+/fRTvfHGG9q6dWu11vj73/9e/fv3V9++fTVv3jzdcccdOnv2rDZu3KiXX35ZjRo10pgxY5Senq7OnTurR48e2rdvn5577jm3v4l3797deV6JiYkKCgpSdHS022OnpKTonnvu0ZAhQzR37lwFBwdr0aJF+vjjj7V69WqfjVpV53E+/vhjFRUVlVreoUMHr37z9KQ/VOa18+T1kKQmTZro3nvvVXp6ur755hvNnTtXt9zi+nteVfpsfHy8Fi9erOnTpys2NlaPP/64YmJidOXKFeXk5OiVV15Rt27dNHbsWI+vnSf91Nd8/XN89913a+HChZo1a5Z69+6t//iP/1BMTIxzVDIjI0OS1LhxY+c2tXH+ly5d0j333KOPPvpIs2fPVtu2bd3ef9SwYUN169ZNV69e1cGDB8sNOVlZWerXr5/b/zdQTWr3vmf/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h8u8Mcbt8hIhISEKCQmp9roAAIB/uClHclq2bKm8vDyXZefOnVNgYKCaN29eS1UBAAB/clOGnPj4eGVlZbks27Jli+Li4hQUFFRLVQEAAH/iFyHn22+/1f79+7V//35J1z4ivn//fp08eVLStftpJk6c6Gw/bdo0nThxQklJSTp06JCWL1+uZcuWae7cubVRPgAA8EN+cU/O3r17NWTIvx6lm5SUJElKTExUenq6cnNznYFHktq3b6/NmzfriSee0MKFCxUVFaU//vGPZX58HAAA1D1+EXIGDx7svHHYnfT09FLLBg0apA8//LAaqwIAADczv3i7CgAAwNcIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArBdZ2Abi5tJu3qcI2x58ZXQOVAABQPkZyAACAlRjJgUfmBK4rc11q0f01WAkAAOVjJAcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgpcDaLgD2mBO47tpfsg+4bzAkueaKAQDUeYzkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEp+ugs+lvnvE/fJ3Njn/fvyZ0TVVDgCgjmIkBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlfh0FWqM87utJKX+97pS61OL7neZ5xNYAICqYCQHAABYiZADAACsRMgBAABW8puQs2jRIrVv31716tVTbGys3nvvvTLbbtu2TQ6Ho9T0ySef1GDFAADAn/lFyFmzZo3mzJmjn//858rJydGAAQM0cuRInTx5stztDh8+rNzcXOfUsWPHGqoYAAD4O78IOb///e81depUPfroo+rSpYtSU1PVpk0bLV68uNztwsPD1bJlS+cUEBBQQxUDAAB/V+shp7CwUPv27dOwYcNclg8bNky7du0qd9tevXopMjJSCQkJys7OLrdtQUGBLly44DIBAAB71XrIOX/+vIqLixUREeGyPCIiQnl5eW63iYyM1CuvvKKMjAxlZmYqOjpaCQkJ2rFjR5nHSUlJUVhYmHNq06aNT88DAAD4F795GKDD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zmn79u365z//KUk6fvy42xuJr59mzpzpdv/Lli3TyJEjFRUV5XFtgVU6MwDwIw6HQ7/5zW90//33KyoqSi+++KLee+89tWrVqrZLA6x19epVBQQEaN++fQoICHBZ17BhQ0lSq1atdOjQoXL307Rp01LLTpw4ob/85S/KzMz0qjZCDgCrjBkzRl27dtWCBQu0ZcsWxcTE1HZJgNV69eql4uJinTt3TgMGDHDbJigoSJ07d/Z432lpaQoPD9fo0aO9qo2QA8Aq77zzjj755BMVFxcrIiKitssBrPDtt9/q008/dc4fO3ZM+/fvV7NmzdSpUyc9/PDDmjhxol544QX16tVL58+f19atW9W9e3eNGjXKq2NevXpVaWlpSkxMVGCgd3HFYYwxXm0JAH7mww8/1ODBg7Vw4UK99tprql+/vtauXVvbZQE3vW3btmnIkCGllicmJio9PV1XrlzR008/rRUrVuj06dNq3ry54uPjtWDBAnXv3t2rY27ZskXDhw/X4cOH1alTJ6/2QcgBYIXjx48rPj5es2bN0vz587Vv3z716dNHe/bsUWxsbG2XB6AWEHIA3PS++uor3X333Ro4cKBefvll5/If/vCHKigo0Ntvv12L1QGoLYQcAABgJZ6TAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAAr/X/bAa1CAP420AAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x = np.linspace(0, np.max(H_ic) ** 2, N)\n", + "plt.hist(H_ic**2, bins=50, density=True)\n", + "# plt.plot(\n", + "# x,\n", + "# sp.stats.gamma.pdf(x, k_Z_ic, scale=theta_Z_ic),\n", + "# )\n", + "plt.hist(sp.stats.gamma.rvs(k_Z_ic, scale=theta_Z_ic, size=N), bins=50, density=True, alpha=0.5)\n", + "plt.title(r\"Verification of Effective Channel Gain $Z_{i,c}$\")\n", + "plt.xlabel(r\"$x$\")\n", + "plt.ylabel(r\"PDF $f(x)$\")\n", + "plt.ticklabel_format(axis=\"both\", style=\"sci\", scilimits=(0, 0))\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$\\mathcal{V_{i,c,f}} = {\\zeta_{i,f}\\rho|\\textbf{H}_{i,c}|^2},$\n", + "\n", + "where $\\rho = \\frac{P}{\\sigma^2}$" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "simulation_V_icf = zeta_if * rho * H_ic**2" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "k_V_icf = k_Z_ic\n", + "theta_V_icf = theta_Z_ic * zeta_if * rho" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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pU5H/t///qddu3aVmrciox6S/J/1mTNnlpjX6/XqjTfeUJMmTc56DZSKqK71SNKll16qyy67TI8//riOHj1a6vVmzZpp//79JS4YWFBQoI8//jgo65eC95mq6u+8urZ78bVfUlJS9NhjjyknJ0e/+93v/K9XpLDs27dPTz75pKZNm6Z27drJ6XTqwgsvPOsp7UDEFZazuf3227V48WK99dZbWrt2ra6//npdfvnl2rRpU6WW98EHH6hHjx66/vrrlZKSom7duumVV14JcmpURI8ePdS5c2dNmjRJhYWFZV575bnnntP27dvVv39/TZ06VQsWLNCHH36oZ599VgMHDgx5xmeeeUaFhYXq1auXXnnlFc2fP19vvfWWbrrpJuXm5kryHUsxdepUTZo0SZ9//rmefPJJ3X777WXuSurUqZP/51q6dKmWL1/uX87pJkyYoIMHD+riiy/Wu+++qw8++EBXXnmlvvvuOz311FNBG02qrvVIvn8wHDhwoMxdsDfccIOcTqeGDx+u2bNna+bMmRo0aJA8Hk/Q1i8F5zMVjN95dWz3AwcOSJJmzJihtLS0Ehfx83q9Wrdu3VkLy7x589S7d2//sWVAhdl7zG9oSTKzZs3yP9+8ebOxLMvs2rWrxHyXXHKJGTt2bKXWERsba2JjY83YsWPNypUrzUsvvWTi4uLMf/7zn6pERyU999xzRpJp3779GefZunWrueOOO0zjxo2N2+02DRs2NH379jVPPPGEf57iMykOHDhQ6v1VOUvIGGPWrVtnrr/+elO/fn0TExNjzj33XHPbbbf5r8Ny+PBhc+edd5qUlBSTkJBgLrjgArNo0SIzYMCAMq9VMnbsWJOWlmYcDkeFr8OSmJho4uPjTe/evc2HH35YYp4z/exnWmZZKrKeyp4ldLqbbrrJSCp1lpAxxsyePdt07drVxMfHmxYtWph//vOfZzxL6PSfd+TIkSYxMbHUMss6I6kin6ny1hWM37kxVfv9VsQnn3xiateubWbPnl3qtY0bN5rU1NSzLmPSpElm2LBhAa8biKrC8s477xhJJjExscTN5XL5/wPaunVrmRdmOvU2evRo/zLdbrfp06dPifXed999pnfv3tXyMwJAdVm7dq1Zs2ZNma/NmDGj1AX9Ro4caUaOHFli2vz5803Dhg3Nxo0bjcfjMatWrTI7d+4MVWREkIg7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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "x = np.linspace(0, np.max(simulation_V_icf), N)\n", + "plt.hist(simulation_V_icf, bins=50, density=True)\n", + "plt.plot(\n", + " x,\n", + " sp.stats.gamma.pdf(x, k_V_icf, scale=theta_V_icf),\n", + ")\n", + "plt.hist(\n", + " sp.stats.gamma.rvs(k_V_icf, scale=theta_V_icf, size=N),\n", + " bins=50,\n", + " density=True,\n", + " alpha=0.5,\n", + ")\n", + "plt.title(r\"Verification of Numerator $\\mathcal{V}_{i,c}$\")\n", + "plt.xlabel(r\"$x$\")\n", + "plt.ylabel(r\"PDF $f(x)$\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$\\mathcal{B_{i,c,f}} = {\\zeta_{i,c}\\rho|\\textbf{H}_{i,c}|^2 + \\rho|\\textbf{h}_{i,c^\\prime}|^2 + 1}$\n", + "\n", + "$\\mathcal{B_{i,c,f}} = {\\mathcal{W_{i,c}} + 1}$,\n", + "\n", + "where $\\mathcal{W_{i,c,f}} = \\zeta_{i,c}\\rho|\\textbf{H}_{i,c}|^2 + \\rho|\\textbf{h}_{i,c^\\prime}|^2$" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "simulation_W_icf = (zeta_ic * rho * H_ic**2) + (rho * h_ic_prime**2)\n", + "simulation_B_icf = simulation_W_icf + 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$\\mu _{\\mathcal{W}_{\\text{ic}}} = \\rho \\mu _{h_{\\text{ic}}}+\\zeta \\rho \\mu _{Z_{\\text{ic}}}$\n", + "\n", + "$\\mu _{\\mathcal{W}_{\\text{ic}}}^{(2)} = \\rho ^2 \\left(\\zeta \\left(2 \\mu _{h_{\\text{ic}}} \\mu\n", + " _{Z_{\\text{ic}}}+\\zeta \\mu _{Z_{\\text{ic2}}}\\right)+\\mu\n", + " _{h_{\\text{ic2}}}\\right)$" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "def fun_mu_h_ic_sqr_interf(p, m_ic, omega_ic):\n", + " return (gamma(m_ic + p) / gamma(m_ic)) * (m_ic / omega_ic) ** (-p)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "mu_W_icf = (\n", + " rho * fun_mu_h_ic_sqr_interf(1, m_ic, omega_ic_prime) + zeta_ic * rho * mu_Z_ic\n", + ") # 1st moment of W_ic\n", + "\n", + "mu_W_icf_2 = rho**2 * (\n", + " zeta_ic\n", + " * (\n", + " (2 * fun_mu_h_ic_sqr_interf(1, m_ic, omega_ic_prime) * mu_Z_ic)\n", + " + zeta_ic * mu_Z_ic_2\n", + " )\n", + " + fun_mu_h_ic_sqr_interf(2, m_ic, omega_ic_prime)\n", + ") # 2nd moment of W_ic\n", + "\n", + "k_W_icf = mu_W_icf**2 / (mu_W_icf_2 - mu_W_icf**2) # Shape parameter of W_ic\n", + "theta_W_icf = (mu_W_icf_2 - mu_W_icf**2) / mu_W_icf # Scale parameter of W_ic" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x = np.linspace(0, np.max(simulation_W_icf), N)\n", + "plt.hist(simulation_W_icf, bins=50, density=True)\n", + "plt.plot(\n", + " x,\n", + " sp.stats.gamma.pdf(x, k_W_icf, scale=theta_W_icf),\n", + ")\n", + "plt.hist(\n", + " sp.stats.gamma.rvs(k_W_icf, scale=theta_W_icf, size=N),\n", + " bins=50,\n", + " density=True,\n", + " alpha=0.5,\n", + ")\n", + "plt.title(r\"Verification of (Denominator - 1) $\\mathcal{W}_{i,c}$\")\n", + "plt.xlabel(r\"$x$\")\n", + "plt.ylabel(r\"PDF $f(x)$\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "mu_B_icf = mu_W_icf + 1 # 1st moment of B_icf\n", + "mu_B_icf_2 = mu_W_icf_2 + 2 * mu_W_icf + 1 # 2nd moment of B_icf\n", + "\n", + "k_B_icf = mu_B_icf**2 / (mu_B_icf_2 - mu_B_icf**2) # Shape parameter of B_icf\n", + "theta_B_icf = (mu_B_icf_2 - mu_B_icf**2) / mu_B_icf # Scale parameter of B_icf" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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1atXxaOPPipcXFyEi4uLePTRR0VBQYFJmwsXLogpU6YIJycn4ebmJp599lmTW3qFEOLIkSMiLCxMqFQq4e3tLd544w2buq1aCFHt8QYg1q5da2zD425+Tz75pPG/Ax4eHmLs2LHGgCUEj3lTujNk8dibX+W4V/b29sLX11c88MAD4vjx48bPm+sxl4SwsWFjiYiIiGwAr8kiIiIisgCGLCIiIiILYMgiIiIisgCGLCIiIiILYMgiIiIisgCGLCIiIiILYMgiIiIisgCGLCIiIiILYMgiIiIisgCGLCIiIiILYMgiIiIisgCGLCJqUeLi4uDo6Ijs7Gzjsnnz5mHgwIHQaDQyVkZEzQ0fEE1ELYoQAoMGDUJYWBhWrlyJpUuX4ssvv8T+/fvRvn17ucsjombETu4CiIiakiRJ+Oc//4mHHnoIvr6+WLFiBfbs2cOARURmx54sImqRhgwZguPHj2P79u0YOXKk3OUQUTPEa7KIqMX56aef8Pvvv0On08HLy0vucoiomWJPFhG1KIcOHcKoUaOwatUqbNiwAa1atcLGjRvlLouImiFek0VELcb58+cxZcoUvPTSS4iIiEDfvn0xdOhQpKamIiAgQO7yiKiZYU8WEbUI165dwz333IMRI0bgs88+My6/7777UFZWhh9//FHG6oioOWLIIiIiIrIAXvhOREREZAEMWUREREQWwJBFREREZAEMWUREREQWwJBFREREZAEMWUREREQWwJBFREREZAEMWUREREQWwJBFREREZAEMWUREREQWwJBFREREZAH/H82la+xfvW2iAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x = np.linspace(0, np.max(simulation_B_icf), N)\n", + "plt.hist(simulation_B_icf, bins=50, density=True)\n", + "plt.plot(\n", + " x,\n", + " sp.stats.gamma.pdf(x, k_B_icf, scale=theta_B_icf),\n", + ")\n", + "plt.hist(\n", + " sp.stats.gamma.rvs(k_B_icf, scale=theta_B_icf, size=N),\n", + " bins=50,\n", + " density=True,\n", + " alpha=0.5,\n", + ")\n", + "plt.title(r\"Verification of Denominator $\\mathcal{B}_{i,c}$\")\n", + "plt.xlabel(r\"$x$\")\n", + "plt.ylabel(r\"PDF $f(x)$\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "simulation_SINR_icf = simulation_V_icf / simulation_B_icf" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "def generalized_beta_prime_pdf(x, a, b, p, q):\n", + " return (p * ((x / q) ** (a * p - 1)) * (1 + (x / q) ** p) ** (-a - b)) / (\n", + " q * sp.special.beta(a, b)\n", + " )\n", + "\n", + "\n", + "def hypergeometric_f1_regularized(a, b, c):\n", + " return sp.special.hyp1f1(a, b, c) / sp.special.gamma(b)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### PDF of SINR $\\gamma_{i,c}$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$\\mathcal{V_{i,c}} = {\\zeta_{i,c}\\rho|\\textbf{H}_{i,c}|^2},$\n", + "\n", + "where $\\rho = \\frac{P}{\\sigma^2}$" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "simulation_V_ic = zeta_ic * rho * H_ic**2" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "k_V_ic = k_Z_ic\n", + "theta_V_ic = theta_Z_ic * zeta_ic * rho" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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8/XNN9/4bPfaa68NWI3Hjx/X4sWLdcMNNyghIeGM7YqLi/XnP/9Z7du3V3h4uFwul8LDw7Vt27ZKjzE5duyYvv32W1133XWqW7eud73T6dStt96qn376yaenQ5Kuuuoqn+XOnTsrPz9f2dnZAd2Pv8LDw/Xss89q+fLl+ve//31e2zrVyJEjfZbbtWsny7I0bNgw7zqXy6XWrVt7rwSszHdKKvu9Ot/feWWOe2W+22FhYQoLC1Nubq53nTFGDz74oJ566ilFREQoKytLcXFxfm8bsAsBStKSJUs0atQopaamyrIsffjhh0Hd35NPPinLsnweycnJQd0nynfdddcpLi5Ob731liRp3rx52rdvn8/g8QMHDqi4uFh/+9vfvH8ISh/Dhw+XJOXk5PhsN5BXsR06dEhut1uNGzc+a7vx48frT3/6k66++mr95z//0bfffqvvvvtOXbp00YkTJyq9b2NMuZ8nNTVVUsnxOVXDhg19lksHpJ+thsrspzJGjx6tiy++WH/4wx9UVFR03tuTpAYNGvgsh4eHq06dOoqMjCyzPj8/X1LlvlNS2e/V+f7OK3PcK/vd9ng8PstPP/20Ro4cqXbt2unll1/W3XffXaHtvPHGG+rUqZNiYmLUqVOncqenAKqCy+4CQsGxY8fUpUsX3XHHHQHtOTibDh066IsvvvAul461QdWKiorSTTfdpNdff12ZmZl68803FRMTo+uvv97bpn79+t5/kd97773lbqdFixY+y5ZlBazGBg0ayOl06qeffjpru7ffflu33Xab/vznP/usz8nJUb169Sq17/r168vhcCgzM7PMa3v37pUkxcfHV2rbduzHsiw999xzuvLKK/Xaa6+V2yYyMlIFBQVl1pcXaCqrMt8pqez36nx/55U57pX5bhcWFsrtdnuvlnzllVcUFRWlMWPGSJLWrl2rzp07n3M7zz77rD766CP9+9//Vps2bfT111+ftVcWCCZ6oFRySfuzzz6ra665ptzXCwsL9bvf/U6NGjVSdHS0evbsqUWLFp3XPl0ul5KTk70P/idgn7vuuktut1vPP/+85s2bp9GjR/tcFl+nTh0NGDBAq1atUufOndW9e/cyj9N7XQIpKipK/fv31+zZs8/6R9yyrDLTD3zyySfas2dPmbYV6RWS5P2+p6Wl+bT1eDx6++231bhx43POwVQRVbUfSbriiit05ZVX6umnn9bRo0fLvN68eXNlZ2f7TKBaWFiozz//PCD7lwL3nTrf33lVHffSuacSExM1ceJE5eXl6Xe/+5339YoEqH379un555/XO++8o3bt2snpdKpfv37nnMICCBYCVAXccccd+vrrr/Xuu+9q7dq1uv766zV06FBt27at0tvctm2bUlNT1aJFC40ePVo//vhjACuGP7p3767OnTtrypQpKioqKnfup5dfflm7du1S3759NWPGDC1atEj/+c9/9NJLL2ngwIFBr/Gvf/2rioqK1LNnT73++utauHCh3n33Xf3yl7/UkSNHJJWMxZkxY4amTJmiBQsW6Pnnn9cdd9xR7qm/Tp06eT9XRkaGli9f7t3O6SZNmqQDBw5owIABev/99zV37lwNHz5c69ev1wsvvBCw3raq2o8kPffcc9q/f79WrFhR5rUbb7xRTqdTo0eP1rx585SWlqbBgwfL7XYHbP9SYL5TgfidV8Vx379/vyRp9uzZSk1N9ZnU1OPxaOPGjecMUOnp6erVq5d3bCJgNwLUOfzwww+aNWuWZs+erb59+6pVq1Z69NFHddlll3nHzfirZ8+emjlzpj7//HO9/vrrysrKUp8+fQIyxgOVc9ddd8kYo/bt23svuT5V+/bttXLlSnXs2FF//OMfNXjwYN111116//33NWjQoKDX16VLFy1btkzdunXThAkTNHToUP3+979XRESEwsPDJZX8Ybzllls0adIkjRo1SnPnzlVaWppatWpVZnuXX365JkyYoP/85z+67LLL1KNHj3LDhCT1799fCxYsUHR0tG6//XaNHj1aubm5mjt3rm688caAfcaq2o8kXXTRRbrpppvKfa1Fixb66KOPdPjwYV133XX67W9/q+uvv1633XZbQGsIxHcqEL/zqjjue/fuVUxMjN599139+te/9nnt+++/V1xc3Dl73A4cOFDpU9FAMFjGGGN3EaHEsix98MEHuvrqqyWV/IvphhtuUHR0tE+7goICXXPNNXrvvfe0Y8eOcscrnOree+/V3//+93JfO3bsmFq1aqXf/e533NYAQI2zbt06GWPK7WV6//339cYbb+izzz7zrrv99tslldzLsNSiRYt0ww036KuvvlLr1q21du1aJSQkqFGjRsEuHygXg8jPwePxyOl0asWKFWUGepde9tuoUaNzXjJcv379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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x = np.linspace(0, np.max(simulation_V_ic), N)\n", + "plt.hist(simulation_V_ic, bins=50, density=True)\n", + "plt.plot(\n", + " x,\n", + " sp.stats.gamma.pdf(x, k_V_ic, scale=theta_V_ic),\n", + ")\n", + "plt.hist(\n", + " sp.stats.gamma.rvs(k_V_ic, scale=theta_V_ic, size=N),\n", + " bins=50,\n", + " density=True,\n", + " alpha=0.5,\n", + ")\n", + "plt.title(r\"Verification of Numerator $\\mathcal{V}_{i,c}$\")\n", + "plt.xlabel(r\"$x$\")\n", + "plt.ylabel(r\"PDF $f(x)$\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$\\mathcal{B_{i,c}} = {\\rho|\\textbf{h}_{i,c^\\prime}|^2 + 1}$\n", + "\n", + "$\\mathcal{B_{i,c}} = {\\mathcal{W_{i,c}} + 1}$,\n", + "\n", + "where $\\mathcal{W_{i,c}} = \\rho|\\textbf{h}_{i,c^\\prime}|^2$" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "simulation_B_ic = (rho * h_ic_prime**2) + 1" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "def fun_mu_h_ic_sqr_interf(p, m_ic, omega_ic):\n", + " return (gamma(m_ic + p) / gamma(m_ic)) * (m_ic / omega_ic) ** (-p)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "mu_W_ic = rho * fun_mu_h_ic_sqr_interf(1, m_ic, omega_ic_prime) # 1st moment of W_ic\n", + "mu_W_ic_2 = rho**2 * fun_mu_h_ic_sqr_interf(\n", + " 2, m_ic, omega_ic_prime\n", + ") # 2nd moment of W_ic\n", + "\n", + "k_W_ic = mu_W_ic**2 / (mu_W_ic_2 - mu_W_ic**2) # Shape parameter of W_ic\n", + "theta_W_ic = (mu_W_ic_2 - mu_W_ic**2) / mu_W_ic # Scale parameter of W_ic" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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4iK2b98ujh07Jl544YUKb59u166dSEpKEocPHxYjRoyo8PbpPn36CK1WK7Rarejdu7dV3Ub+17/+Vbi4uIiffvrJ7Hby27dvm2JsZSwWLlwofv75Z5Geni6OHj0qFi1aJOzs7MTu3buFELYzDpW5/+5OIWxnPObOnSt++uknceHCBfHrr7+K8ePHCycnJ9N//2xlHIQwPo5FqVSKd999V5w9e1Zs3rxZtGjRQmzatMkUY0vjodfrRYcOHcT8+fMttlnbOLBIa+ZWrVolOnbsKNRqtQgICDA9oqGp2rNnjwBgsUybNk0IYbyVfMmSJcLLy0toNBoxZMgQcezYMbM+7ty5I15//XXh5uYmHBwcxPjx40VGRoZZTF5enpg6dapwcnISTk5OYurUqeLGjRuNdJTVq2gMAIj169ebYmxlLF555RXT73jr1q3FE088YSrQhLCdcajMg0WarYxH+fOtVCqV8PHxEc8995w4ceKEabutjEO5b7/9Vvj7+wuNRiN69OghPvvsM7PttjQe33//vQAgTp8+bbHN2sZBEkKI2s29EREREVFD4zVpRERERFaIRRoRERGRFWKRRkRERGSFWKQRERERWSEWaURERERWiEUaERERkRVikUZERERkhVikEREREVkhFmlEREREVohFGhEREZEVYpFGREREZIVYpBERNZAtW7bA3t4eV69eNbW9+uqr6NOnD/Lz82XMjIiaAn7BOhFRAxFCoF+/fggJCcHKlSuxdOlSfPHFF/j111/Rtm1budMjIiunlDsBIqLmSpIkvPvuu3j++efh4+ODjz/+GHv37mWBRkQ1wpk0IqIGFhAQgBMnTmD37t0YOnSo3OkQURPBa9KIiBrQ999/j99//x16vR6enp5yp0NETQhn0oiIGsjhw4cxbNgwrFq1Clu3bkWLFi2wbds2udMioiaC16QRETWAixcvYty4cViwYAHCwsLg5+eHRx99FCkpKQgMDJQ7PSJqAjiTRkRUz65fv45BgwZhyJAh+PTTT03tzzzzDEpKSvDdd9/JmB0RNRUs0oiIiIisEG8cICIiIrJCLNKIiIiIrBCLNCIiIiIrxCKNiIiIyAqxSCMiIiKyQizSiIiIiKwQizQiIiIiK8QijYiIiMgKsUgjIiIiskIs0oiIiIisEIs0IiIiIiv0/wGqTRP9y6VyeQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x = np.linspace(0, np.max((rho * h_ic_prime**2)), N)\n", + "plt.hist((rho * h_ic_prime**2), bins=50, density=True)\n", + "plt.plot(\n", + " x,\n", + " sp.stats.gamma.pdf(x, k_W_ic, scale=theta_W_ic),\n", + ")\n", + "plt.hist(\n", + " sp.stats.gamma.rvs(k_W_ic, scale=theta_W_ic, size=N),\n", + " bins=50,\n", + " density=True,\n", + " alpha=0.5,\n", + ")\n", + "plt.title(r\"Verification of Denominator $\\mathcal{B}_{i,c}$\")\n", + "plt.xlabel(r\"$x$\")\n", + "plt.ylabel(r\"PDF $f(x)$\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "mu_B_ic = mu_W_ic + 1 # 1st moment of B_ic\n", + "mu_B_ic_2 = mu_W_ic_2 + 2 * mu_W_ic + 1 # 2nd moment of B_ic\n", + "\n", + "k_B_ic = mu_B_ic**2 / (mu_B_ic_2 - mu_B_ic**2) # Shape parameter of B_ic\n", + "theta_B_ic = (mu_B_ic_2 - mu_B_ic**2) / mu_B_ic # Scale parameter of B_ic" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x = np.linspace(0, np.max(simulation_B_ic), N)\n", + "plt.hist(simulation_B_ic, bins=50, density=True)\n", + "plt.plot(\n", + " x,\n", + " sp.stats.gamma.pdf(x, k_B_ic, scale=theta_B_ic),\n", + ")\n", + "plt.hist(\n", + " sp.stats.gamma.rvs(k_B_ic, scale=theta_B_ic, size=N),\n", + " bins=50,\n", + " density=True,\n", + " alpha=0.5,\n", + ")\n", + "plt.title(r\"Verification of Denominator $\\mathcal{B}_{i,c}$\")\n", + "plt.xlabel(r\"$x$\")\n", + "plt.ylabel(r\"PDF $f(x)$\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "simulation_SINR_ic = simulation_V_ic / simulation_B_ic" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHICAYAAACiZIUjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABKiUlEQVR4nO3deVxWZf7/8fcta26EqCBuQFouuCSUgZFaCq5pWWmTaaXOkJUp47ckK9MWTM3UcinXKRuy0swZKUVT06RShBYls1xoFDKowGUEwfP7wx/3eHezKnBzc17Px+N+xH2d65z7c2HI2+uccx2LYRiGAAAATKiOowsAAABwFIIQAAAwLYIQAAAwLYIQAAAwLYIQAAAwLYIQAAAwLYIQAAAwLYIQAAAwLYIQAAAwLYIQAAAwLYIQUAt8+eWXuuOOO9SqVSt5eHjI19dXYWFh+vvf/27ts2rVKlksFu3du9euzdPTU8eOHbM7bq9evRQcHGzXv+jl6uqqZs2aacSIETp06FC5ai2ujksNGjRIAQEBdv2PHj1aruMX2b17t5577jn98ccfFdoPgLkQhAAnt3HjRoWHhys3N1ezZs3S5s2bNX/+fPXo0UNr1qwp1zHy8vL09NNPl/szV65cqaSkJG3ZskWPPvqoNmzYoJtvvlm///775Q6jRAMHDlRSUpKaNWtWof12796t6dOnE4QAlMrV0QUAuDKzZs1SYGCgNm3aJFfX//1IjxgxQrNmzSrXMfr166d//vOfmjx5srp06VJm/+DgYIWGhkq6OGtUWFioadOmaf369XrwwQcvbyAlaNKkiZo0aVKpx6wOZ8+eVd26dR1dBoAyMCMEOLns7Gw1btzYJgQVqVOnfD/iTzzxhHx8fPTkk09eVg1FoeiXX365rP1LU9ypsV9//VV//etf1bJlS3l4eKhJkybq0aOHtmzZIkl67rnn9H//93+SpMDAQOupvO3bt0uSdu3apdtuu00NGjRQ3bp1FR4ero0bN9p99kcffaTOnTvLw8NDQUFBmj9/vp577jlZLBabfkVt+/bt01133SVvb29dc801kqQff/xRDz74oNq2bau6deuqefPmGjx4sL799ttij/HNN9/o7rvvlpeXlxo1aqSYmBgVFBTo4MGD6tevnxo0aKCAgIByhdwHH3xQ3t7eevPNN+22rV+/XhaLRZs2bSrzOEBtRhACnFxYWJi+/PJLTZgwQV9++aXOnz9f4WM0aNBATz/9tDZt2qRPP/20wvsfOXJEknTttdeWe5/CwkIVFBTYvQzDKHPf+++/X+vXr9ezzz6rzZs3a9myZerTp4+ys7MlSWPHjtVjjz0mSVq3bp2SkpKUlJSkbt26aceOHbr11luVk5Oj5cuXKz4+Xg0aNNDgwYNtTiV+8sknuvPOO+Xj46M1a9Zo1qxZio+P1z/+8Y8S67rzzjvVpk0bvf/++1qyZIkk6cSJE/Lx8dHMmTP1ySefaOHChXJ1dVX37t118OBBu2Pcc8896tKli9auXatx48bp1Vdf1aRJkzR06FANHDhQH374oW699VY9+eSTWrduXanfp8cff1zXXnutnn/+eZv2U6dO6bHHHtO9996rqKioMr/fQK1mAHBqWVlZxs0332xIMiQZbm5uRnh4uBEXF2ecOnXK2m/lypWGJGPPnj3FtuXl5RlBQUFGaGioceHCBcMwDKNnz55Gx44d7fp/8cUXxvnz541Tp04Zn3zyieHn52fccsstxvnz58ust+gYpb1at25t1//IkSPWtvr16xsTJ04s9XNmz55tt59hGMZNN91kNG3a1OZ7U1BQYAQHBxstWrSwjv2GG24wWrZsaeTl5Vn7nTp1yvDx8TH+/FfntGnTDEnGs88+W+b4CwoKjPz8fKNt27bGpEmT7I7xyiuv2PTv2rWrIclYt26dte38+fNGkyZNjDvvvLPMzyv6/v3222/WtgkTJhje3t5GZmamYRiGce7cOcPX19f4448/yjweUNswIwQ4OR8fH+3cuVN79uzRzJkzNWTIEP3www+KjY1Vp06dlJWVVa7juLu764UXXtDevXv13nvvldr3pptukpubmxo0aKB+/frJ29tbH330UbGn50ry1ltvac+ePXavm2++ucx9b7zxRq1atUovvPCCvvjii3LPgp05c0Zffvml7rrrLtWvX9/a7uLiovvvv1//+c9/dPDgQZ05c0Z79+7V0KFD5e7ubu1Xv359DR48uMTjDxs2zK6toKBAL730kjp06CB3d3e5urrK3d1dhw4dUlpaml3/QYMG2bxv3769LBaL+vfvb21zdXVVmzZtir3T7886dOggSTpw4IAkae/evXr99df18ssvy9fXV5Lk4eGhzMxMeXl5lXk8oLYhCAG1RGhoqJ588km9//77OnHihCZNmqSjR4+W+4Jp6eIF1t26ddPUqVNLDRdFIebTTz/V3/72N6Wlpenee++tUL3t27dXaGio3as8v4zXrFmj0aNHa9myZQoLC1OjRo00atQoZWZmlrrf77//LsMwir0Dzd/fX9LFa66K+hUFhUsV11akuOPGxMTomWee0dChQ/Wvf/1LX375pfbs2aMuXbrov//9r13/Ro0a2bx3d3dX3bp15enpadd+7ty5Emsp0qFDB1ksFn333XcqLCzUX//6V4WHh2vs2LHWPvPnz7d5X5ply5apU6dOatCggTp16lSuMAbUZNw1BtRCbm5umjZtml599VV999135d7PYrHo5ZdfVt++fYu9wLZIUYiRpN69e6uwsFDLli3TBx98oLvuuuuK6y9L48aNNW/ePM2bN0/p6enasGGDpkyZopMnT+qTTz4pcT9vb2/VqVNHGRkZdttOnDhhPba3t7csFkuxF3+XFrb+fBG1JK1evVqjRo3SSy+9ZNOelZWlq6++usRjVZb69eurRYsW2r9/v+bPn6/9+/crJSXFptZvvvlGnTt3LvNYL7zwgj766CO99957uvbaa/X555875R19wKWYEQKcXHG/1CVZT7sUzXSUV58+fdS3b1/NmDFDp0+fLtc+s2bNkre3t5599llduHChQp93pVq1aqVHH31Uffv21b59+6ztHh4ekmQz61KvXj11795d69ats2m/cOGCVq9erRYtWujaa69VvXr1FBoaqvXr1ys/P9/a7/Tp0/r3v/9dofosFou1liIbN27U8ePHK3ScK9GhQwd9+umnevbZZ/XEE09YT5cVKU8Q+uWXXzR79mz985//VPv27eXi4qJbbrmFJQLg9JgRApxcVFSUWrRoocGDB6tdu3a6cOGCUlNT9corr6h+/fp6/PHHK3zMl19+WSEhITp58qQ6duxYZn9vb2/FxsbqiSee0D//+U+NHDnycoZSLjk5Oerdu7f+8pe/qF27dmrQoIH27NljvcurSKdOnSRdPO0zevRoubm56brrrlNcXJz69u2r3r17a/LkyXJ3d9eiRYv03XffKT4+3jpTMmPGDA0cOFBRUVF6/PHHVVhYqNmzZ6t+/fr67bffyl3voEGDtGrVKrVr106dO3dWcnKyZs+erRYtWlTuN6YUHTp00KZNm9S2bVtNnTrVZtuFCxd04MCBMoNQYmKibrrpJrVt27YqSwWqHTNCgJN7+umn5e3trVdffVW33367+vfvrwULFqhPnz766quvrIGgIq6//voKX/Pz2GOPqVWrVpoxY4YKCwsr/Jnl5enpqe7du+vtt9/Wfffdp/79+2vZsmV68skntXTpUmu/Xr16KTY2Vv/61790880364YbblBycrJ69uypTz/9VPXq1dMDDzygESNGKCcnRxs2bNDw4cOt+/fr109r165Vdna2hg8frpiYGN1xxx0aMmRIhU5pzZ8/XyNHjlRcXJwGDx6sDRs2aN26ddZ1hqpD0bIGr732mt21Rj/++KO8vLzk4+NT6jGys7Or5VQeUN0shlGORTsAADp//ry6du2q5s2ba/PmzY4up9xiY2O1YMEC5ebmysXFxWbbBx98oGXLltlcW/XAAw9IuriYZZHt27frnnvu0a5du9SmTRt98803atKkiZo3b14dQwCqDKfGAKAEY8aMUd++fdWsWTNlZmZqyZIlSktL0/z58x1dWoXs3btX3bp1swtBkvTtt9/anRb7z3/+YzM7Jl2cYZswYYJ69eqlU6dOqV27dhW+XgqoiZgRAoAS3HPPPdq9e7d+/fVXubm5qVu3bnrqqafUr18/R5dWIT4+Pho9erTmzp1bZt+CggJ17txZX3/9tdzc3KqhOsCxCEIAAMC0uFgaAACYFkEIAACYFkEIAACYFneNleLChQs6ceKEGjRoUOzS+QAAoOYxDEOnTp2Sv7+/6tQpfc6HIFSKEydOqGXLlo4uAwAAXIaff/65zFXcCUKlaNCggaSL38iGDRs6uBoAAFAeubm5atmypfX3eGkIQqUoOh3WsGFDghAAAE6mPJe1cLE0AAAwLYIQAAAwLYIQAAAwLa4RAgDUOoWFhTp//ryjy0AVcnd3L/PW+PIgCAEAag3DMJSZmak//vjD0aWgitWpU0eBgYFyd3e/ouMQhAAAtUZRCGratKnq1q3LYri1VNGCxxkZGWrVqtUV/TkThAAAtUJhYaE1BPn4+Di6HFSxJk2a6MSJEyooKJCbm9tlH4eLpQEAtULRNUF169Z1cCWoDkWnxAoLC6/oOAQhAECtwukwc6isP2eCEAAAMC2CEAAATsBisWj9+vVV/jkBAQGaN29ejTlOVeNiaQBArRcwZWO1ft7RmQMrvM/Jkyf1zDPP6OOPP9Yvv/wib29vdenSRc8995zCwsKUkZEhb2/vKqj2yqxatUoTJ060W7Jgz549qlevnmOKqgCCEAAANcCwYcN0/vx5/eMf/1BQUJB++eUXbd26Vb/99pskyc/Pz8EVVkyTJk0cXUK5cGoMAAAH++OPP7Rr1y69/PLL6t27t1q3bq0bb7xRsbGxGjjw4uzSpafGjh49KovFovfee08RERG66qqrdMMNN+iHH37Qnj17FBoaqvr166tfv3769ddfrZ/Tq1cvTZw40eazhw4dqgceeKDE2ubOnatOnTqpXr16atmypcaPH6/Tp09LkrZv364HH3xQOTk5slgsslgseu655yTZnxpLT0/XkCFDVL9+fTVs2FD33HOPfvnlF+v25557Tl27dtXbb7+tgIAAeXl5acSIETp16tTlf2PLgSAEAICD1a9fX/Xr19f69euVl5dX7v2mTZump59+Wvv27ZOrq6vuvfdePfHEE5o/f7527typn376Sc8+++wV1VanTh0tWLBA3333nf7xj3/o008/1RNPPCFJCg8P17x589SwYUNlZGQoIyNDkydPtjuGYRgaOnSofvvtN+3YsUOJiYn66aefNHz4cJt+P/30k9avX69///vf+ve//60dO3Zo5syZV1R/WTg1BqD22NK77D59tlV9HUAFubq6atWqVRo3bpyWLFmibt26qWfPnhoxYoQ6d+5c4n6TJ09WVFSUJOnxxx/Xvffeq61bt6pHjx6SpDFjxmjVqlVXVNulM0iBgYF6/vnn9fDDD2vRokVyd3eXl5eXLBZLqafutmzZom+++UZHjhxRy5YtJUlvv/22OnbsqD179uiGG26QdHHF6FWrVqlBgwaSpPvvv19bt27Viy++eEVjKA0zQgAA1ADDhg3TiRMntGHDBkVFRWn79u3q1q1bqUHm0pDk6+srSerUqZNN28mTJ6+orm3btqlv375q3ry5GjRooFGjRik7O1tnzpwp9zHS0tLUsmVLawiSpA4dOujqq69WWlqatS0gIMAagiSpWbNmV1x/WQhCAADUEJ6enurbt6+effZZ7d69Ww888ICmTZtWYv9LHy1RtMDgn9suXLhgfV+nTh0ZhmFzjKIVuYtz7NgxDRgwQMHBwVq7dq2Sk5O1cOHCMvf7M8Mwil0A8c/tf35Uxp/rrwoEIQAAaqgOHTpUaOalLE2aNFFGRob1fWFhob777rsS++/du1cF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oaFatGiRta1jx47Wry+9kalonE2bNtWBAwcUHBxc7u9PVWFGCAAABzt48KC++uorjRgxQpLk6uqq4cOHa8WKFTb9OnfubP26WbNmki4uKCxdnHl54okn1KFDB1199dWqX7++vv/++1KvNRo7dqxWrlxpPc7GjRttZpnKo2hGqCQ//fST/vKXvygoKEgNGzZUYGCgJNWYa6CYEQIAwMGWL1+ugoICNW/e3NpmGIbc3Nys19pIsi4aLNk+UkqS/u///k+bNm3SnDlz1KZNG1111VW66667lJ+fX+Lnjho1SlOmTFFSUpKSkpIUEBCgiIiICtV+1VVXlbp98ODBatmypZYuXSp/f39duHBBwcHBpdZVnQhCAAA4UEFBgd566y298sorioyMtNk2bNgwvfPOO+U6hbRz50498MADuuOOOyRdvGbo6NGjpe7j4+OjoUOHauXKlUpKStKDDz5os93d3d16rU9JOnfurK1bt2r69Ol227Kzs5WWlqY33njDGrB27dpV5liqE0EIAAAH+ve//63ff/9dY8aMsVub56677tLy5cv16quvlnmcNm3aaN26dRo8eLAsFoueeeaZcl2QPHbsWA0aNEiFhYUaPXq0zbaAgAB9+eWXOnr0qOrXr69GjRrZ7R8bG6tOnTpp/Pjxio6Olru7u7Zt26a7775bjRo1ko+Pj9588001a9ZM6enpNW5hY64RAlBrJB3OLvUF1ETLly9Xnz59il2gcNiwYUpNTS1zAWFJevXVV+Xt7a3w8HANHjxYUVFR6tatW5n79enTR82aNVNUVJT8/f1ttk2ePFkuLi7q0KGDmjRpUux1Pddee602b96sr7/+WjfeeKPCwsL00UcfydXVVXXq1NG7776r5ORkBQcHa9KkSZo9e3aZNVUni/Hne/NglZubKy8vL+Xk5Khhw4aOLgdAGZLe7Fzq9rAgn8te8Rc137lz53TkyBEFBgbK09PT0eU4jbNnz8rf318rVqzQnXfe6ehyyq20P++K/P7m1BgAACZ04cIFZWZm6pVXXpGXl5duv/12R5fkEAQhAABMKD09XYGBgWrRooVWrVolV1dzRgJzjhoAAJMLCAiwW7najLhYGgAAmBZBCABQqzDLYQ6V9edMEAIA1ApFqy6fPXvWwZWgOhStTO3i4nJFx+EaIQBAreDi4qKrr77a+uytunXrWh9DgdrlwoUL+vXXX1W3bt0rvsibIAQAqDWKnpJeFIZQe9WpU0etWrW64rBLEAIA1BoWi0XNmjVT06ZNdf78eUeXgyrk7u6uOnWu/AofghAAoNZxcXG54mtHYA5cLA0AAEyLIAQAAEyLU2MAnEbAlI2lbo8PqqZCANQazAgBAADTIggBAADT4tQYANNIOpyte0s5vXZ05sBqrAZATUAQAuActvRWfFC2o6sAUMsQhADUKCVdEE0IAlAVuEYIAACYFkEIAACYFkEIAACYFkEIAACYFkEIAACYFneNAagZtvSWVPV3h8UHxZZSw5yL/+2zrUprAFBzMCMEAABMiyAEAABMiyAEAABMiyAEAABMiyAEAABMiyAEAABMiyAEAABMiyAEAABMiyAEAABMiyAEAABMiyAEAABMq8YEoUWLFikwMFCenp4KCQnRzp07S+2/Y8cOhYSEyNPTU0FBQVqyZInN9lWrVslisdi9zp07V5XDAAAATqRGBKE1a9Zo4sSJmjp1qlJSUhQREaH+/fsrPT292P5HjhzRgAEDFBERoZSUFD311FOaMGGC1q5da9OvYcOGysjIsHl5enpWx5AAAIATqBFPn587d67GjBmjsWPHSpLmzZunTZs2afHixYqLi7Prv2TJErVq1Urz5s2TJLVv31579+7VnDlzNGzYMGs/i8UiPz+/ahkDAABwPg6fEcrPz1dycrIiIyNt2iMjI7V79+5i90lKSrLrHxUVpb179+r8+fPWttOnT6t169Zq0aKFBg0apJSUlFJrycvLU25urs0LAADUXg6fEcrKylJhYaF8fX1t2n19fZWZmVnsPpmZmcX2LygoUFZWlpo1a6Z27dpp1apV6tSpk3JzczV//nz16NFDX3/9tdq2bVvscePi4jR9+vTKGRiAYgVM2Vhse3xQdjVXAgA1YEaoiMVisXlvGIZdW1n9L22/6aabNHLkSHXp0kURERF67733dO211+q1114r8ZixsbHKycmxvn7++efLHQ4AAHACDp8Raty4sVxcXOxmf06ePGk361PEz8+v2P6urq7y8fEpdp86derohhtu0KFDh0qsxcPDQx4eHhUcAYBaZ0vvsvv02Vb1dQCocg6fEXJ3d1dISIgSExNt2hMTExUeHl7sPmFhYXb9N2/erNDQULm5uRW7j2EYSk1NVbNmzSqncAAA4PQcHoQkKSYmRsuW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/PPq0KGD3NzcNGLECEIQAABwGpcdhIKCgrRz5069//77Sk5O1rp16zR+/Hi9/PLLlVkfAABAlbnsU2MrV67UiBEjrO+joqK0bds2DRo0SMeOHdOiRYsqpUAAAICqctkzQpeGoCLdunXT7t27tX379iupCQAAoFpUKAilp6eX2ScgIECff/65JOn48eOXVxUAAEA1qFAQuuGGGzRu3Dh99dVXJfbJycnRBx98oODgYK1bt+6KCwQAAKgqFbpGKC0tTXFxcerXr5/c3NwUGhoqf39/eXp66vfff9eBAwe0f/9+hYaGavbs2erfv39V1Q0AAHDFKjQj9PLLL+v555/XiRMntGTJEl177bXKysrSoUOHJEn33XefkpOT9fnnnxOCAABAjVehGaFXX31Vf//739W0aVOtX79eixYtUr169aqqNgAAgCpVoRmh5s2ba9++fZKk1atX6+zZs1VSFAAAQHWoUBCaPHmybr/9doWHh0u6GIa++uor/fe//62S4gAAAKpShYLQI488opSUFA0aNEiGYWjhwoUKDw9Xw4YN1b59e40YMUIzZ87Uxx9/XFX1AgAAVJoKryzdsWNHdezYUStWrNAXX3yhevXq6ZtvvlFqaqpSU1P10Ucf6cUXX9SpU6eqol4AAIBKc9mP2Pjxxx+tX3fv3l3du3e3vjcM48qqAgAAqAaXHYRKY7FYquKwAGqAgCkbbd7HB2U7qBIAuHKX/awxAAAAZ0cQAgAApkUQAgAAplXhIHT48GEuhgYAALVChYNQ27Zt9euvv1rfDx8+XL/88kulFgUAAFAdKhyE/jwblJCQoDNnzlRaQQAAANWFa4QAAIBpVXgdIYvFYrdOEOsGAYCt+KBY+8Ytc2zf99lWPcUAKFGFg5BhGHrggQfk4eEhSTp37pyio6NVr149m37r1q2rnAoBAACqSIWD0OjRo23ejxw5stKKAQAAqE4VDkIrV66sijoAAACqXY25WHrRokUKDAyUp6enQkJCtHPnzlL779ixQyEhIfL09FRQUJCWLFlis33dunUKDQ3V1VdfrXr16qlr1656++23q3IIAADAyVxWELpw4YJWrFihQYMGKTg4WJ06ddLtt9+ut95667IWW1yzZo0mTpyoqVOnKiUlRREREerfv7/S09OL7X/kyBENGDBAERERSklJ0VNPPaUJEyZo7dq11j6NGjXS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TIsgBAAATIsgBKDWy87OVtOmTXX06NEy+86cOVNhYWHlPvZdd92luXPnXkF1AByJIASg1ouLi9PgwYMVEBBQZt+vv/5aXbp0kSTdcsstslgs1lejRo00dOhQ/frrr9b+zz77rF588UXl5uZWVfkAqhBBCECt9t///lfLly/X2LFjy9X/66+/VteuXWUYhlJTUzVnzhxlZGTo+PHjio+P16effqoXXnjB2r9z584KCAjQO++8U1VDAFCFCEIAnE58fLw8PT11/Phxa9vYsWPVuXNn5eTk2PT9+OOP5erqWuzprrS0NPXq1UtXXXWVrr/+eu3du1c//PCDunTpokOHDunUqVPq1auX/Pz85O/vr6ioKF1zzTU6c+aMzXFuv/12xcfHV81gAVQpghAApzNixAhdd911iouLkyRNnz5dmzZt0scffywvLy+bvp999plCQ0PtjvH999+re/fuCg0N1Xfffadnn31WQ4YMkWEY6ty5s5KTk+Xu7q5OnTpJkvLy8rR06VIdOnRI0dHRNse68cYb9dVXXykvL6+KRgygqrg6ugAAqCiLxaIXX3xRd911l/z9/TV//nzt3LlTzZs3t+t79OhR+fv727U/8sgjGjJkiObMmSNJuuaaa/Tee+9p3759qlevnvbt26fz58+rUaNGkqSzZ8+qadOm2rRpk12wat68ufLy8pSZmanWrVtXwYgBVBVmhAA4pUGDBqlDhw6aPn26PvzwQ3Xs2LHYfv/973/l6elp03bs2DF9+umniomJsWl3c3OzXiidnJyse+65R6mpqUpNTdXnn3+udu3a6W9/+5sKCwtt9rvqqqskXQxLAJwLQQiAU9q0aZO+//57FRYWytfXt8R+jRs31u+//27TlpqaKldXV+tpryL79u1T165dJUkpKSm6+eab1aZNG7Vp00ZhYWGaPHmy9u/fr2PHjtns99tvv0mSmjRpUgkjA1CdCEIAnM6+fft0991364033lBUVJSeeeaZEvtef/31OnDggE1bnTp1dOHCBeXn51vbEhIStH//fnXt2lWHDx/WH3/8oW7dutnsd/jwYbm4uFhPlxX57rvv1KJFCzVu3LgSRgegOhGEADiVo0ePauDAgZoyZYruv/9+zZgxQ2vXrlVycnKx/aOiorR//36bWaGQkBC5ublp8uTJOnz4sDZs2KBx48ZJkrp06aLk5GRZLBb5+voqMzNTP/30k1atWqVp06YpOjpaV199tc1n7Ny5U5GRkVU2ZgBVx2IYhuHoIgCgPH777Tf16NFDt9xyi9544w1r+5AhQ5SXl6dPPvmk2P3CwsL0wAMP6G9/+5u1bfXq1YqNjdWZM2d0/fXXq3v37lq6dKl+/fVXxcbGaubMmda+3t7eatu2raKjozV69GjVqfO/f0OeO3dOvr6+2rRpk2666aYqGDWAqkQQAlDrJSQkaPLkyfruu+9sQkxlWLhwoT766CNt3ry5Uo8LoHpw+zyAWm/AgAE6dOiQjh8/rpYtW1bqsd3c3PTaa69V6jEBVB9mhAAAgGlxsTQAADAtghAAADAtghAAADAtghAAADAtghAAADAtghAAADAtghAAADAtghAAADAtghAAADCt/wchYwClggZFyQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.hist(pow2db(simulation_SINR_ic), bins=50, density=True, label=\"Simulation\")\n", + "plt.hist(\n", + " pow2db(\n", + " sp.stats.betaprime.rvs(\n", + " k_V_ic,\n", + " k_B_ic,\n", + " loc=0,\n", + " scale=theta_V_ic / theta_B_ic,\n", + " size=N,\n", + " ),\n", + " ),\n", + " bins=50,\n", + " density=True,\n", + " color=\"orange\",\n", + " alpha=0.75,\n", + " label=\"Analytical\"\n", + ")\n", + "plt.title(r\"SINR Histogram $\\gamma_{i,c}$\")\n", + "plt.xlabel(r\"$x\\:(dB)$\")\n", + "plt.ylabel(r\"PDF $f(x)$\")\n", + "# plt.ticklabel_format(axis=\"both\", style=\"sci\", scilimits=(0, 0))\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### PDF of SINR $\\gamma_{f}$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Effective Channel $\\textbf{H}_{i, f}=\\textbf{h}_{i, f}+\\textbf{h}_{R, f}^H \\mathbf{\\Theta_r}\\textbf{h}_{i, R}$\n", + "\n", + "Channel Gain $Z_{i,f} = |H_{i,f}|^2 = (h_{i,f} + G_{i,R,f})^2$\n", + "\n", + "Direct Channel $h_{i,f}$\n", + "\n", + "Additionally, $\\hat{i} \\in \\mathcal{I}_c \\backslash i$" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "m_if = 1\n", + "m_if_hat = 1\n", + "omega_if = 1 * db2pow(-1 * pathloss_if)\n", + "omega_if_hat = 1 * db2pow(-1 * pathloss_if_hat)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "def fun_mu_h_if(p, m_if, omega_if):\n", + " return (gamma(m_if + p / 2) / gamma(m_if)) * (m_if / omega_if) ** (-p / 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [], + "source": [ + "mu_h_if = fun_mu_h_if(1, m_if, omega_if) # 1st moment of h_if\n", + "mu_h_if_2 = fun_mu_h_if(2, m_if, omega_if) # 2nd moment of h_if\n", + "mu_h_if_hat = fun_mu_h_if(1, m_if_hat, omega_if_hat) # 1st moment of h_if_hat\n", + "mu_h_if_hat_2 = fun_mu_h_if(2, m_if_hat, omega_if_hat) # 2nd moment of h_if_hat\n", + "\n", + "k_h_if = (mu_h_if**2) / (mu_h_if_2 - mu_h_if**2) # Shape parameter of h_if\n", + "theta_h_if = (mu_h_if_2 - mu_h_if**2) / mu_h_if # Scale parameter of h_if\n", + "\n", + "k_h_if_hat = (mu_h_if_hat**2) / (\n", + " mu_h_if_hat_2 - mu_h_if_hat**2\n", + ") # Shape parameter of h_if_hat\n", + "theta_h_if_hat = (\n", + " mu_h_if_hat_2 - mu_h_if_hat**2\n", + ") / mu_h_if_hat # Scale parameter of h_if_hat" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAHGCAYAAABXQNCQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABZZElEQVR4nO3dd3iT9f7/8eedpHtBKavsvTeIILgXIOrBhQcVxeP5KTg5nuM4nuMWx/Go5ygqHsXjFwUPijhQFEUQRWQLArJHGaWU0dLSleT+/ZE2WlugI+knTV+P68qV5M6dO6+koX3zWbdl27aNiIiISAhzmA4gIiIicjIqWERERCTkqWARERGRkKeCRUREREKeChYREREJeSpYREREJOSpYBEREZGQp4JFREREQp4KFhEREQl5KlhEREQk5KlgkSr73e9+R0xMDEeOHDnuPmPGjCEiIoL9+/cH5DXffPNNLMtix44dpba/++67dOvWjZiYGCzLYvXq1cfdN1AWL17MQw89VOb9B/t1A6W8z+xE1qxZww033ECbNm2Ijo4mPj6evn378vTTT3Po0KGaCf0rDz30EJZlkZmZedJ9Tf5MSnJWVEU/58q8/9qgMj+jrKwsHA4Hzz//fNBzSehQwSJVduONN5Kfn88777xT7uNZWVl88MEHXHTRRTRu3DggrzlixAi+//57mjZt6t924MABrr32Wtq1a8fcuXP5/vvv6dixY7n7BtLixYt5+OGHyxQswX7dQDjeZ3Y8r732Gv369WPZsmX8+c9/Zu7cuXzwwQdcccUVvPLKK9x44401mL7yasPPBGr/51xTli9fjm3bnHLKKaajSA1ymQ4gtdewYcNITU3ljTfeYPz48WUenz59Onl5eQH5JXvs2DFiY2Np2LAhDRs2LPXYpk2bKCoq4pprruGMM87wby/Zv6aVlzHUHO8zK8/333/PLbfcwnnnncfs2bOJioryP3beeefxpz/9iblz5wY7crXUhp9JOHzONWX58uVERETQt29f01GkBqmFRarM6XQyduxYVqxYwdq1a8s8PnXqVJo2bcqwYcP82zZv3szvf/97GjVqRFRUFF26dOGll14q9bySpu6VK1dy+eWXU79+fdq1aweUbTa+/vrrGTJkCABXXXUVlmVx5plnlrsvwM8//8zVV19N48aNiYqKomXLllx33XUUFBQAsGXLFm644QY6dOhAbGwszZo1Y+TIkWXe30MPPcSf//xnANq0aYNlWViWxYIFC47btP3tt99yzjnnkJCQQGxsLIMHD2bOnDnlvvd169Zx9dVXk5SUROPGjRk3bhxZWVkV+Kmc/HVO9JmV54knnsCyLKZMmVLqj2iJyMhILr744iq/1zVr1nDFFVeQlJREcnIyEydOxO12s3HjRi688EISEhJo3bo1Tz/9dLn50tLSGDVqFImJiSQlJXHNNddw4MCBUvv89mdS2c+5It9bgDlz5tC7d2+ioqJo06YN//jHP477uf5WVT5ngP3795/wPVTmO13RzyRYn19FLVu2jB49erBkyRLOOecc4uPjadKkCY888kiVjymhTwWLVMu4ceOwLIs33nij1Pb169ezdOlSxo4di9Pp9G8bMGAAP/30E88++yyffPIJI0aM4Pbbb+fhhx8uc+xRo0bRvn17Zs6cySuvvFLu6//tb3/z/+J74okn+P7775k8eXK5+/74448MGDCAJUuW8Mgjj/DZZ58xadIkCgoKKCwsBGDv3r00aNCAJ598krlz5/LSSy/hcrkYOHAgGzdu9B/rD3/4A7fddhsAs2bN4vvvv+f7778/7v/4Fi5cyNlnn01WVhavv/4606dPJyEhgZEjR/Luu++W2f+yyy6jY8eOvP/++9x7772888473HXXXeUeu7KvU5nPzOPxMH/+fPr160eLFi1O+vpVea9XXnklvXr14v333+emm27iueee46677uLSSy9lxIgRfPDBB5x99tncc889zJo1q8zzf/e739G+fXvee+89HnroIWbPns0FF1xAUVHRSbNW5HOu6Pf2q6++4pJLLiEhIYEZM2bwzDPP8L///Y+pU6eeNEdVPueKvoeKfqcr85lUZt/K/ruviOXLl3PgwAEmTpzI2LFj+eijjzj99NN58MEHWbhwYZWOKbWALVJNZ5xxhp2SkmIXFhb6t/3pT3+yAXvTpk3+bRdccIHdvHlzOysrq9Tzb731Vjs6Oto+dOiQbdu2/eCDD9qA/fe//73Ma02dOtUG7O3bt/u3ff311zZgz5w584T7nn322Xa9evXsjIyMCr83t9ttFxYW2h06dLDvuuuuUo8988wzZbIcL+Opp55qN2rUyD569GipY3fv3t1u3ry57fV6S733p59+utQxx48fb0dHR/v3O56Kvs7xPrPfSk9PtwF79OjRJ9yvKhlK3uuzzz5b6vm9e/e2AXvWrFn+bUVFRXbDhg3tUaNG+beVPP+3P5e3337bBuxp06b5t/32Z1KZz7mi39uBAwfaqampdl5enn+f7OxsOzk52T7Zr9qqfM5V/a4c7ztdmeMF4/Mr799NeQ4cOGAD9oABA+z8/Hz/9t27d9uAPXnyZNu2bTs/P99u3LixfeTIkRMez7Zt+6uvvrI7depkJyYm2k8++eRJ9xcz1MIi1XbjjTeSmZnJRx99BIDb7WbatGkMHTqUDh06AJCfn89XX33F7373O2JjY3G73f7L8OHDyc/PZ8mSJaWOe9lllwUs47Fjx1i4cCFXXnnlCccyuN1unnjiCbp27UpkZCQul4vIyEg2b97Mhg0bqvTaubm5/PDDD1x++eXEx8f7tzudTq699lp2795d5n+6v23679mzJ/n5+WRkZAT0dQKtKhkuuuiiUve7dOmCZVmluhJdLhft27dn586dZV5zzJgxpe5feeWVuFwuvv7665PmPdnnXNHvbW5uLsuWLWPUqFFER0f7j1fSshRMJ3sPlf1OV+a7F6jPrzKWLVsGwGOPPVaq6+zgwYMApKamAhAVFUV6ejpJSUknPeYdd9zB448/TlZWFvfcc0+l8kjNCbuC5ZtvvmHkyJGkpqZiWRazZ8+u8rG2bNlCQkIC9erVC1i+cHT55ZeTlJTkb/r+9NNP2b9/f6nBtgcPHsTtdvPvf/+biIiIUpfhw4cDlJmeGcgZHYcPH8bj8dC8efMT7jdx4kT+9re/cemll/Lxxx/zww8/sGzZMnr16kVeXl6VX9u27XLfT8kv15JftiUaNGhQ6n7JL+YTZajK65xMSkoKsbGxbN++vUL7VyVDcnJyqfuRkZHExsaW+sNfsj0/P7/McZs0aVLqvsvlokGDBhV6ryf7nCv6vT18+DBer7dMlvLylaeyn3Nl3kNlv9OV+e4F6vOrjOXLlxMTE8PZZ59davvKlSsB6NOnDwAvvPACf/jDH054rJycHOLj41m3bh1jx47l0ksvrVQWqVlhN0soNzeXXr16ccMNN1Trf+hFRUVcffXVDB06lMWLFwcwYfiJiYnh6quv5rXXXmPfvn288cYbJCQkcMUVV/j3qV+/vv9/2RMmTCj3OG3atCl1vzJrV5xMcnIyTqeT3bt3n3C/adOmcd111/HEE0+U2p6ZmVnlwrV+/fo4HA727dtX5rG9e/cCvj9Y1RWM13E6nZxzzjl89tln7N69+6QFX029119LT0+nWbNm/vtut5uDBw+W+WNaFRX93kZHR2NZFunp6eXmO5nKfs6VEYzvdEVV5d/9ySxfvpxevXrhcrnKbE9JSaFly5aAbz2bnj17nvBY8fHxzJs3j//3//4fa9asqVQOqXlh18IybNgwHnvsMUaNGlXu44WFhfzlL3+hWbNmxMXFMXDgQBYsWFBmvwceeIDOnTtz5ZVXBjlxeLjxxhvxeDw888wzfPrpp4wePZrY2Fj/47GxsZx11lmsWrWKnj170r9//zKXQPyBOZ6YmBjOOOMMZs6cecL/0VmWVWaGxpw5c9izZ0+ZfSvS6gH4v2ezZs0qta/X62XatGk0b978hGugVFSwXue+++7Dtm1uuukm/+DkXysqKuLjjz8OaoYTefvtt0vd/9///ofb7T7hzKeKquj3Ni4ujlNOOYVZs2aVagU6evSo/7M5mcp8zpVRme90oAXj3/2yZcvo169fme0rVqwotb0iBUvJfj169KhUBjEj7FpYTuaGG25gx44dzJgxg9TUVD744AMuvPBC1q5d6x9vMX/+fGbOnMnq1avLnZUgZfXv35+ePXvy/PPPY9t2uWuvvPDCCwwZMoShQ4dyyy230Lp1a44ePcqWLVv4+OOPmT9/flAz/vOf/2TIkCEMHDiQe++9l/bt27N//34++ugjXn31VRISErjooot488036dy5Mz179mTFihU888wz5f6Pt+SX3AsvvMDYsWOJiIigU6dO5b72pEmTOO+88zjrrLO4++67iYyMZPLkyfz0009Mnz49YK1JwXidQYMG8fLLLzN+/Hj69evHLbfcQrdu3SgqKmLVqlVMmTKF7t27+8dq1NR7LTFr1ixcLhfnnXce69at429/+xu9evUK2H82Kvq9ffTRR7nwwgv9a6Z4PB6eeuop4uLiKrQScGU/54qqzHc6GAL5737fvn3s27eP/v37l9rudrv58ccfmThxIuArkNevX1/hgqUi+4l5dapg2bp1K9OnT2f37t3+/vS7776buXPnMnXqVJ544gkOHjzI9ddfz7Rp00hMTDScuHa58cYbueOOO+jatSsDBw4s83jXrl1ZuXIljz76KA888AAZGRnUq1ePDh06+Puzg6lXr14sXbqUBx98kPvuu4+jR4/SpEkTzj77bCIjIwHfL9eIiAgmTZpETk4Offv2ZdasWTzwwANljnfmmWdy33338d///pfXXnsNr9d73IGeZ5xxBvPnz+fBBx/k+uuvx+v10qtXLz766KMyg06rI1ivc9NNN3HKKafw3HPP8dRTT5Genk5ERAQdO3bk97//PbfeemvQMxzPrFmzeOihh3j55ZexLIuRI0fy/PPP+3+m1VXR723Jgm8PPPAAV111FU2aNGH8+PHk5eVVePpuZT7niqrMdzoYAvnvvmTA7W9bWNavX09eXp5/+5YtW0hKSqpQ683atWuD8r2UwLNs27ZNhwgWy7L44IMP/AOpZs6cyZVXXklcXFyp/QoKChg1ahTvvvsuo0aNomPHjjz55JOAb8GpO++884TnyxERkdDx3nvv8Z///KfUysDXX3894Pud/mv169dn7dq1NdbiJFVXp1pYvF4vTqeTFStW+BczK1EyBXP+/Pl89NFH/hUqbdvG6/XicrmYMmUK48aNq/HcIiJScWvXri3TzbN7926uuuqqUtvS0tKwLEvFSi1RpwqWPn364PF4yMjIYOjQoeXu8/333+PxePz3P/zwQ5566ikWL15caiaCiIiEpt92wbndbvbu3etvZSnRokULI2cal6oJu4IlJyeHLVu2+O9v376d1atXk5ycTMeOHRkzZgzXXXcdzz77LH369CEzM5P58+fTo0cPhg8fTpcuXUodb/ny5TgcDrp3717Tb0VERALA5XKxfv160zGkmsKuYFm+fDlnnXWW/37JqPGxY8fy5ptvMnXqVB577DH+9Kc/sWfPHho0aMCgQYNqZNCniIiIVE1YD7oVERGR8BB2C8eJiIhI+AmLLiGv18vevXtJSEgI+KJUIiIiEhy2bXP06FFSU1NxOE7chhIWBcvevXtp0aKF6RgiIiJSBWlpaSedXh4WBUtCQgLge8NanVZERKR2yM7OpkWLFv6/4ycSFgVLSTdQYmKiChYREZFapiLDOTToVkREREKeChYREREJeSpYREREJOSpYBEREZGQFxIFy0MPPYRlWaUuTZo0MR1LREREQkTIzBLq1q0bX375pf++0+k0mEZERERCScgULC6XS60qIiIiUq6Q6BIC2Lx5M6mpqbRp04bRo0ezbdu24+5bUFBAdnZ2qYuIiIiEr5AoWAYOHMhbb73F559/zmuv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//zHdIygOHr0qN2hQwd73rx59hlnnGHfcccdpiMF1IMPPmj36tXLdIygu+eee+whQ4aYjlHj7rjjDrtdu3a21+s1HSWgRowYYY8bN67UtlGjRtnXXHNNtY+tFpZyFBYWsmLFCs4///xS288//3wWL15sKJUESlZWFgDJycmGkwSPx+NhxowZ5ObmMmhQ8M7eatKECRMYMWIE5557rukoQbN582ZSU1Np06YNo0ePZtu2baYjBdxHH31E//79ueKKK2jUqBF9+vThtddeMx0rqAoLC5k2bRrjxo0L+Al7TRsyZAhfffUVmzZtAuDHH3/k22+/Zfjw4dU+dkisdBtqMjMz8Xg8ZU6+2Lhx4zInaZTaxbZtJk6cyJAhQ+jevbvpOAG3du1aBg0aRH5+PvHx8XzwwQd07drVdKyAmzFjBitXrmTZsmWmowTNwIEDeeutt+jYsSP79+/nscceY/Dgwaxbt44GDRqYjhcw27Zt4+WXX2bixIncf//9LF26lNtvv52oqCiuu+460/GCYvbs2Rw5coTrr7/edJSAu+eee8jKyqJz5844nU48Hg+PP/44V199dbWPrYLlBH5b+dq2HXbVcF1z6623smbNGr799lvTUYKiU6dOrF69miNHjvD+++8zduxYFi5cGFZFS1paGnfccQdffPEF0dHRpuMEzbBhw/y3e/TowaBBg2jXrh3//e9/mThxosFkgeX1eunfvz9PPPEEAH369GHdunW8/PLLYVuwvP766wwbNozU1FTTUQLu3XffZdq0abzzzjt069aN1atXc+edd5KamsrYsWOrdWwVLOVISUnB6XSWaU3JyMgo0+oitcdtt93GRx99xDfffEPz5s1NxwmKyMhI2rdvD0D//v1ZtmwZL7zwAq+++qrhZIGzYsUKMjIy6Nevn3+bx+Phm2++4cUXX6SgoACn02kwYXDExcXRo0cPNm/ebDpKQDVt2rRMQd2lSxfef/99Q4mCa+fOnXz55ZfMmjXLdJSg+POf/8y9997L6NGjAV+xvXPnTiZNmlTtgkVjWMoRGRlJv379/KO4S8ybN4/BgwcbSiVVZds2t956K7NmzWL+/Pm0adPGdKQaY9s2BQUFpmME1DnnnMPatWtZvXq1/9K/f3/GjBnD6tWrw7JYASgoKGDDhg00bdrUdJSAOu2008osM7Bp06aQOPltMEydOpVGjRoxYsQI01GC4tixYzgcpUsLp9MZkGnNamE5jokTJ3LttdfSv39/Bg0axJQpU9i1axc333yz6WgBlZOTw5YtW/z3t2/fzurVq0lOTqZly5YGkwXOhAkTeOedd/jwww9JSEjwt5wlJSURExNjOF3g3H///QwbNowWLVpw9OhRZsyYwYIFC5g7d67paAGVkJBQZvxRXFwcDRo0CKtxSXfffTcjR46kZcuWZGRk8Nhjj5GdnV3t/6WGmrvuuovBgwfzxBNPcOWVV7J06VKmTJnClClTTEcLOK/Xy9SpUxk7diwuV3j++R05ciSPP/44LVu2pFu3bqxatYp//vOfjBs3rvoHr/Y8ozD20ksv2a1atbIjIyPtvn37huU02K+//toGylzGjh1rOlrAlPf+AHvq1KmmowXUuHHj/N/Xhg0b2uecc479xRdfmI5VI8JxWvNVV11lN23a1I6IiLBTU1PtUaNG2evWrTMdKyg+/vhju3v37nZUVJTduXNne8qUKaYjBcXnn39uA/bGjRtNRwma7Oxs+4477rBbtmxpR0dH223btrX/+te/2gUFBdU+tmXbtl39skdEREQkeDSGRUREREKeChYREREJeSpYREREJOSpYBEREZGQp4JFREREQp4KFhEREQl5KlhEREQk5KlgERERqUO++eYbRo4cSWpqKpZlMXv27KC+3kMPPYRlWaUuTZo0qfRxVLCIiIjUIbm5ufTq1YsXX3yxxl6zW7du7Nu3z39Zu3ZtpY8RniczEBERkXINGzaMYcOGHffxwsJCHnjgAd5++22OHDlC9+7deeqppzjzzDOr/Joul6tKrSq/phYWERER8bvhhhv47rvvmDFjBmvWrOGKK67gwgsvZPPmzVU+5ubNm0lNTaVNmzaMHj2abdu2VfoYKlhEJCRNnz6d6Oho9uzZ49/2hz/8gZ49e5KVlWUwmUj42rp1K9OnT2fmzJkMHTqUdu3acffddzNkyBCmTp1apWMOHDiQt956i88//5zXXnuN9PR0Bg8ezMGDByt1HBUsIhKSRo8eTadOnZg0aRIADz/8MJ9//jmfffYZSUlJhtOJhKeVK1di2zYdO3YkPj7ef1m4cCFbt24FYMeOHWUG0f72cuutt/qPOWzYMC677DJ69OjBueeey5w5cwD473//W6lsGsMiIiHJsiwef/xxLr/8clJTU3nhhRdYtGgRzZo1Mx1NJGx5vV6cTicrVqzA6XSWeiw+Ph6AZs2asWHDhhMep379+sd9LC4ujh49elS6i0kFi4iErIsuuoiuXbvy8MMP88UXX9CtWzfTkUTCWp8+ffB4PGRkZDB06NBy94mIiKBz585Vfo2CggI2bNhw3OMfjwoWEQlZn3/+OT///DMej4fGjRubjiMSFnJyctiyZYv//vbt21m9ejXJycl07NiRMWPGcN111/Hss8/Sp08fMjMzmT9/Pj169GD48OGVfr27776bkSNH0rJlSzIyMnjsscfIzs5m7NixlTqOZdu2XelXFxEJspUrV3LmmWfy0ksvMWPGDGJjY5k5c6bpWCK13oIFCzjrrLPKbB87dixvvvkmRUVFPPbYY7z11lvs2bOHBg0aMGjQIB5++GF69OhR6dcbPXo033zzDZmZmTRs2JBTTz2VRx99lK5du1bqOCpYRCTk7Nixg0GDBnHbbbdx//33s2LFCgYMGMCyZcvo16+f6XgiYoAKFhEJKYcOHeK0007j9NNP59VXX/Vvv+SSSygoKGDu3LkG04mIKSpYREREJORpHRYREREJeSpYREREJOSpYBEREZGQp4JFREREQp4KFhEREQl5KlhEREQk5KlgERERkZCngkVERERCngoWERERCXkqWERERCTkqWARERGRkPf/AbWiTvTFNyb5AAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x = np.linspace(0, np.max(h_if), N)\n", + "plt.hist(h_if, bins=50, density=True)\n", + "plt.plot(\n", + " x,\n", + " sp.stats.gamma.pdf(x, k_h_if, scale=theta_h_if),\n", + ")\n", + "plt.hist(\n", + " sp.stats.gamma.rvs(k_h_if, scale=theta_h_if, size=N),\n", + " bins=50,\n", + " density=True,\n", + " alpha=0.5,\n", + ")\n", + "plt.title(r\"Verification of Combined Channel $h_{i,f}$\")\n", + "plt.xlabel(r\"$x$\")\n", + "plt.ylabel(r\"PDF $f(x)$\")\n", + "plt.ticklabel_format(axis=\"both\", style=\"sci\", scilimits=(0, 0))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAHGCAYAAABXQNCQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABVn0lEQVR4nO3dd3hUdf728feZmUx6oQUIhCYi0psgCIooKk2x41qwPj8Fd1V017K66lpiWVfdVWyruK4FRcFlVVSUKkVpoSMgLZCEUBMS0mbmPH9MEokESMLMnCn367rmmsyZM3PuKZBPvu0YpmmaiIiIiAQxm9UBRERERE5EBYuIiIgEPRUsIiIiEvRUsIiIiEjQU8EiIiIiQU8Fi4iIiAQ9FSwiIiIS9FSwiIiISNBTwSIiIiJBTwWLiIiIBD0VLFJvl156KbGxsRw8ePCY+1x77bVERUWxe/dunxzz3XffxTAMtm3bVm37xx9/TOfOnYmNjcUwDDIzM4+5r68sXLiQxx577KjX7+/j+kpN79nxrFq1iptuuom2bdsSExNDQkICvXr14rnnnmP//v2BCX2Exx57DMMw2Lt37wn3tfIzqcxZW7V9n+vy+kNBXT6j/Px8bDYbL7300jH3+eGHH5g2bZrvAorlVLBIvd1yyy2UlJTw4Ycf1nh/fn4+06ZNY+TIkTRt2tQnxxwxYgSLFi2iefPmVdv27NnD9ddfzymnnMLXX3/NokWL6NChQ437+tLChQt5/PHHjypY/H1cXzjWe3Ysb731Fr1792bJkiX88Y9/5Ouvv2batGlceeWVvP7669xyyy0BTF93ofCZQOi/z4GydOlSTNOkb9++Nd5fVlbGvffeS0ZGBtnZ2QFOJ/7isDqAhK5hw4aRlpbGO++8w7hx4466/6OPPqK4uNgn/8kePnyYuLg4mjRpQpMmTardt3HjRsrLy7nuuus455xzqrZX7h9oNWUMNsd6z2qyaNEi7rjjDoYOHcrnn39OdHR01X1Dhw7l3nvv5euvv/Z35JMSCp9JOLzPgbJ06VKioqLo1atXjff/4x//YNy4cXTs2JFHHnmEt99+O8AJxS9MkZPw4IMPmoC5atWqo+7r27ev2bx5c9PlclVt27hxo3nNNdeYTZo0MZ1Op9mxY0fzlVdeqfa4Rx991ATMZcuWmZdffrmZkpJiNmvWzDRN05w0aZIJmFu3bjVN0zTHjh1rAtUu55xzTo37mqZprl+/3hwzZoyZmppqOp1OMz093bz++uvNkpIS0zRNc9OmTeaNN95otm/f3oyNjTXT0tLMkSNHHvX6KjP+9jJ79uwaj2uapjl//nxzyJAhZkJCghkbG2v279/f/OKLL2p83jVr1phjxowxk5KSzNTUVPOmm24yDx48WKvP5ETHOd57VpORI0eaDofD3LFjR62OX9fXunLlSvOKK64wk5KSzAYNGpj33HOPWV5ebm7YsMG88MILzYSEBLN169bms88+W+Pjly9fbl566aVmYmKimZSUZF577bVmXl5etX1/+5nU9X2uzffWNE3ziy++MLt37246nU6zTZs25vPPP191rBOp6/tc29dQ1+90bd4Tf7x/x/p3U5PLL7/c7NWrlzl79mxzyJAhZnx8vNm0aVPz8ccfr9V7J6FJXUJyUm6++WYMw+Cdd96ptn3dunX89NNPjB07FrvdXrXtjDPOYM2aNbzwwgt88cUXjBgxgj/84Q88/vjjRz33ZZddRvv27ZkyZQqvv/56jcd/5JFHePXVVwF4+umnWbRoERMnTqxx35UrV3LGGWewePFi/vrXvzJjxgwyMjIoLS2lrKwMgOzsbBo1asQzzzzD119/zauvvorD4aBfv378/PPPVc9166238vvf/x6AqVOnsmjRIhYtWnTMv/jmzp3LkCFDyM/P5+233+ajjz4iMTGRUaNG8fHHHx+1/+WXX06HDh347LPPeOCBB/jwww+55557anzuuh6nLu+Z2+1m1qxZ9O7dm/T09BMevz6v9aqrrqJ79+589tln3Hbbbbz44ovcc889jB49mhEjRjBt2jSGDBnC/fffz9SpU496/KWXXkr79u359NNPeeyxx/j888+58MILKS8vP2HW2rzPtf3efv/991xyySUkJiYyefJknn/+eT755BMmTZp0whz1eZ9r+xpq+52uy3tSl33r+u++NpYuXcqePXuYMGECY8eOZfr06Zx99tk8+uijzJ07t17PKSHA6opJQt8555xjNm7c2CwrK6vadu+995qAuXHjxqptF154odmyZUszPz+/2uPvvPNOMyYmxty/f79pmr/+9faXv/zlqGPV9FfY7NmzTcCcMmXKcfcdMmSImZKSctRf38fjcrnMsrIy89RTTzXvueeeavc9//zzNf5FWFPGM888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IpqVRZFm7KMpB4jCDQU7vZcTKHVEUxydQKkzltKoWFqldoOYFIhNqfk6JgmcCd6ZTo4Yb7eXSJgJioLl448/5u6772bixImcddZZvPHGGwwbNox169bRqlUrq+MB4KScv5XOowGlrLc1ZJqjvdWRRCRYGDaKYpP50dGcH2letbmscCgANjxseagPFOzyDvAtyIbCPCjay/acJcSWFhJXWkhsSSF20020q5RoVykUVTxR3qZaR/EYNsrtTsodTsod0b9e2520adLFW9RExXnPv+SIqX4dFVvD9t/sY4vyzp6yOSquK26rSBI/M0zTNK0O0a9fP3r16sVrr71Wte30009n9OjRZGRknPDxBQUFJCcnk5+fT1KSD9dEKciG7BU8/J+ZjLHPpottG4dxcFXsCDbaNVNARHzj7vMrTp5qmjjLS7zFS2kh0eXFRJcVe68rfo4pr347uryYKFcpUe5ya1+EYf+1kLE5OGy68Bg2PDb7Edd2PLZft6UlpoNh857/yebwPofN/us2w87EU3p6bx/HuB7jAvQixdfq8vvb8haWsrIyli1bxgMPPFBt+wUXXMDChQtrfExpaSmlpaVVt/Pz8wHvC/epVV/BlxP4E4AHdhDFn6LPZn15PJSXnujRIiK18sIXq49537jBnY5538Q5FQN/DbDZTWJxEWe6iKOcG3o3J8pVhtNVhsNdVlXURLlKsbvLsXtc2D1uHG4Xdk85drcLu8dF7r4Cok0P0bhxmm6cuImuuMQZJjbTjY2a/s51VVyOZqu4/FYBW4/52ioVNz39hK03tfm//61Vb51wn9u63XbCfWojkMfyFasyV352tWo7MS22a9cuEzAXLFhQbftTTz1ldujQocbHPProoyagiy666KKLLrqEwSUrK+uE9YLlLSyVjN9U0KZpHrWt0oMPPsiECROqbns8Hvbv30+jRo2O+Zj6KigoID09naysLN92N0md6bMIDvocgoc+i+Chz6J+TNPk0KFDpKWlnXBfywuWxo0bY7fbyc3NrbY9Ly+Ppk2b1viY6OhooqOjq21LSUnxV0QAkpKS9CUMEvosgoM+h+ChzyJ46LOou+Tk5FrtZ/m8XKfTSe/evZk5s/qS2jNnzmTAgAEWpRIREZFgYnkLC8CECRO4/vrr6dOnD/379+fNN99kx44d3H777VZHExERkSAQFAXL1Vdfzb59+/jrX/9KTk4OXbp04auvvqJ169ZWRyM6OppHH330qC4oCTx9FsFBn0Pw0GcRPPRZ+F9QrMMiIiIicjyWj2EREREROREVLCIiIhL0VLCIiIhI0FPBIiIiIkFPBctxTJw4kbZt2xITE0Pv3r2ZP3++1ZEiTkZGBmeccQaJiYmkpqYyevRofv75Z6tjCd7PxjAM7r77bqujRKRdu3Zx3XXX0ahRI+Li4ujRowfLli2zOlbEcblcPPzww7Rt25bY2FjatWvHX//6Vzwej9XRwo4KlmP4+OOPufvuu/nzn//MihUrGDRoEMOGDWPHjh1WR4soc+fOZfz48SxevJiZM2ficrm44IILKCoqsjpaRFuyZAlvvvkm3bp1szpKRDpw4ABnnXUWUVFRzJgxg3Xr1vHCCy/4fcVvOdqzzz7L66+/ziuvvML69et57rnneP755/nnP/9pdbSwo2nNx9CvXz969erFa6+9VrXt9NNPZ/To0WRkZFiYLLLt2bOH1NRU5s6dy9lnn211nIhUWFhIr169mDhxIk8++SQ9evTgpZdesjpWRHnggQdYsGCBWn2DwMiRI2natClvv/121bbLL7+cuLg4/vOf/1iYLPyohaUGZWVlLFu2jAsuuKDa9gsuuICFCxdalEoA8vPzAWjYsKHFSSLX+PHjGTFiBOeff77VUSLW9OnT6dOnD1deeSWpqan07NmTt956y+pYEWngwIF8//33bNy4EYCVK1fyww8/MHz4cIuThZ+gWOk22Ozduxe3233UyRebNm161EkaJXBM02TChAkMHDiQLl26WB0nIk2ePJnly5ezZMkSq6NEtC1btvDaa68xYcIEHnroIX766Sf+8Ic/EB0dzQ033GB1vIhy//33k5+fT8eOHbHb7bjdbp566imuueYaq6OFHRUsx2EYRrXbpmketU0C584772TVqlX88MMPVkeJSFlZWdx11118++23xMTEWB0nonk8Hvr06cPTTz8NQM+ePVm7di2vvfaaCpYA+/jjj3n//ff58MMP6dy5M5mZmdx9992kpaUxduxYq+OFFRUsNWjcuDF2u/2o1pS8vLyjWl0kMH7/+98zffp05s2bR8uWLa2OE5GWLVtGXl4evXv3rtrmdruZN28er7zyCqWlpdjtdgsTRo7mzZvTqVOnattOP/10PvvsM4sSRa4//vGPPPDAA4wZMwaArl27sn37djIyMlSw+JjGsNTA6XTSu3dvZs6cWW37zJkzGTBggEWpIpNpmtx5551MnTqVWbNm0bZtW6sjRazzzjuP1atXk5mZWXXp06cP1157LZmZmSpWAuiss846anr/xo0bg+KEsZHm8OHD2GzVf5Xa7XZNa/YDtbAcw4QJE7j++uvp06cP/fv3580332THjh3cfvvtVkeLKOPHj+fDDz/kv//9L4mJiVWtXsnJycTGxlqcLrIkJiYeNXYoPj6eRo0aaUxRgN1zzz0MGDCAp59+mquuuoqffvqJN998kzfffNPqaBFn1KhRPPXUU7Rq1YrOnTuzYsUK/v73v3PzzTdbHS38mHJMr776qtm6dWvT6XSavXr1MufOnWt1pIgD1HiZNGmS1dHENM1zzjnHvOuuu6yOEZH+97//mV26dDGjo6PNjh07mm+++abVkSJSQUGBedddd5mtWrUyY2JizHbt2pl//vOfzdLSUqujhR2twyIiIiJBT2NYREREJOipYBEREZGgp4JFREREgp4KFhEREQl6KlhEREQk6KlgERERkaCngkVERESCngoWERGRCDJv3jxGjRpFWloahmHw+eef+/V4jz32GIZhVLs0a9aszs+jgkVERCSCFBUV0b17d1555ZWAHbNz587k5ORUXVavXl3n59C5hERERCLIsGHDGDZs2DHvLysr4+GHH+aDDz7g4MGDdOnShWeffZbBgwfX+5gOh6NerSpHUguLiIiIVLnppptYsGABkydPZtWqVVx55ZVcdNFFbNq0qd7PuWnTJtLS0mjbti1jxoxhy5YtdX4OFSwiEpQ++ugjYmJi2LVrV9W2W2+9lW7dupGfn29hMpHw9csvv/DRRx8xZcoUBg0axCmnnMJ9993HwIEDmTRpUr2es1+/frz33nt88803vPXWW+Tm5jJgwAD27dtXp+dRwSIiQWnMmDGcdtppZGRkAPD444/zzTffMGPGDJKTky1OJxKeli9fjmmadOjQgYSEhKrL3Llz+eWXXwDYtm3bUYNof3u58847q55z2LBhXH755XTt2pXzzz+fL7/8EoB///vfdcqmMSwiEpQMw+Cpp57iiiuuIC0tjZdffpn58+fTokULq6OJhC2Px4PdbmfZsmXY7fZq9yUkJADQokUL1q9ff9znadCgwTHvi4+Pp2vXrnXuYlLBIiJBa+TIkXTq1InHH3+cb7/9ls6dO1sdSSSs9ezZE7fbTV5eHoMGDapxn6ioKDp27FjvY5SWlrJ+/fpjPv+xqGARkaD1zTffsGHDBtxuN02bNrU6jkhYKCwsZPPmzVW3t27dSmZmJg0bNqRDhw5ce+213HDDDbzwwgv07NmTvXv3MmvWLLp27crw4cPrfLz77ruPUaNG0apVK/Ly8njyyScpKChg7NixdXoewzRNs85HFxHxs+XLlzN48GBeffVVJk+eTFxcHFOmTLE6lkjImzNnDueee+5R28eOHcu7775LeXk5Tz75JO+99x67du2iUaNG9O/fn8cff5yuXbvW+Xhjxoxh3rx57N27lyZNmnDmmWfyxBNP0KlTpzo9jwoWEQk627Zto3///vz+97/noYceYtmyZZxxxhksWbKE3r17Wx1PRCyggkVEgsr+/fs566yzOPvss3njjTeqtl9yySWUlpby9ddfW5hORKyigkVERESCntZhERERkaCngkVERESCngoWERERCXoqWERERCToqWARERGRoKeCRURERIKeChYREREJeipYREREJOipYBEREZGgp4JFREREgp4KFhEREQl6/x/KGG3fZNx67wAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x = np.linspace(0, np.max(h_if_hat), N)\n", + "plt.hist(h_if_hat, bins=50, density=True)\n", + "plt.plot(\n", + " x,\n", + " sp.stats.gamma.pdf(x, k_h_if_hat, scale=theta_h_if_hat),\n", + ")\n", + "plt.hist(\n", + " sp.stats.gamma.rvs(k_h_if_hat, scale=theta_h_if_hat, size=N),\n", + " bins=50,\n", + " density=True,\n", + " alpha=0.5,\n", + ")\n", + "plt.title(r\"Verification of Combined Channel $h_{\\hat{i},f}$\")\n", + "plt.xlabel(r\"$x$\")\n", + "plt.ylabel(r\"PDF $f(x)$\")\n", + "plt.ticklabel_format(axis=\"both\", style=\"sci\", scilimits=(0, 0))\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cascaded Channel $G_{i,R,f} = \\sqrt{\\beta_t} \\sum_{k=1}^{K} |{h_{R,f}}||{h_{i,R}}|$" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "m_iR = 2\n", + "m_iR_hat = 2\n", + "m_Rf = 2\n", + "omega_iR = 1 * db2pow(-1 * pathloss_iR)\n", + "omega_iR_hat = 1 * db2pow(-1 * pathloss_iR_hat)\n", + "omega_Rf = 1 * db2pow(-1 * pathloss_Rf)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [], + "source": [ + "def fun_mu_h_iR(p, m_iR, omega_iR):\n", + " return gamma(m_iR + p / 2) / gamma(m_iR) * (m_iR / omega_iR) ** (-p / 2)\n", + "\n", + "\n", + "def fun_mu_h_Rf(p, m_Rf, omega_Rf):\n", + " return gamma(m_Rf + p / 2) / gamma(m_Rf) * (m_Rf / omega_Rf) ** (-p / 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [], + "source": [ + "def fun_mu_G_iRf(p, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K, beta_t):\n", + " mu = (gamma(m_iR_hat + (1 / 2)) * gamma(m_Rf + (1 / 2))) / (\n", + " gamma(m_iR_hat) * gamma(m_Rf) * (m_iR_hat * m_Rf) ** (1 / 2)\n", + " )\n", + " k = mu**2 / (1 - mu**2)\n", + " theta = (1 - mu**2) / mu\n", + "\n", + " return (\n", + " gamma((K * k) + p) * (np.sqrt(omega_iR_hat * omega_Rf * beta_t) * theta) ** p\n", + " ) / gamma(K * k)\n", + "\n", + "\n", + "mu_G_iRf = fun_mu_G_iRf(\n", + " 1, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t\n", + ") # 1st moment of G_iRc\n", + "mu_G_iRf_2 = fun_mu_G_iRf(\n", + " 2, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t\n", + ") # 2nd moment of G_iRc\n", + "\n", + "mu_G_iRf_hat = fun_mu_G_iRf(\n", + " 1, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t\n", + ") # 1st moment of G_iRc\n", + "mu_G_iRf_hat_2 = fun_mu_G_iRf(\n", + " 2, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t\n", + ") # 2nd moment of G_iRcarameter of G_iRc\n", + "\n", + "k_G_iRf = mu_G_iRf**2 / (mu_G_iRf_2 - mu_G_iRf**2) # Shape parameter of G_iRc\n", + "theta_G_iRf = (mu_G_iRf_2 - mu_G_iRf**2) / mu_G_iRf # Scale parameter of G_iRc\n", + "\n", + "k_G_iRf_hat = mu_G_iRf_hat**2 / (\n", + " mu_G_iRf_hat_2 - mu_G_iRf_hat**2\n", + ") # Shape parameter of G_iRc\n", + "theta_G_iRf_hat = (\n", + " mu_G_iRf_hat_2 - mu_G_iRf_hat**2\n", + ") / mu_G_iRf_hat # Scale parameter of G_iRc" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi0AAAHGCAYAAAC4gruuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABU4ElEQVR4nO3deXhTZf4+/vskabrvC7S0tKyy74hsIgiy6uAoiONSN74i6KioIzgzKqNSlcFttKio8OGHAqKAqAiiICCCQqEstlCgLV0o3ffSLXl+f6QJlLY0aZOck+R+XVcumuTknDuHtH332Y4khBAgIiIiUjiV3AGIiIiIzMGihYiIiBwCixYiIiJyCCxaiIiIyCGwaCEiIiKHwKKFiIiIHAKLFiIiInIILFqIiIjIIbBoISIiIofAooWIiIgcAosWatHtt98OT09PlJSUtLjNPffcAzc3N+Tm5lrlmKtXr4YkSUhPT2/0+IYNG9C3b194enpCkiQkJia2uK21/Pbbb3j55ZebvH9bH9damjtn13L8+HE8+OCD6NKlCzw8PODj44MhQ4bgzTffRFFRkX1CX+Hll1+GJEkoKChodVs5/0+MOc1l7nm25P07grb8H504cQKPPPIIunXrBg8PD3h5eaFXr1549NFH8fvvvwMAfv31V2zevNlGqUlpWLRQix5++GFUV1fjiy++aPb50tJSbN68GTNmzECHDh2scszp06fjwIEDCA8PNz2Wn5+P++67D926dcP27dtx4MAB9OzZs9ltrem3337DkiVLmhQttj6uNbR0zlqycuVKDB06FIcOHcJzzz2H7du3Y/PmzZg1axY+/PBDPPzww3ZMbzlH+D8BHP8829Pbb7+NIUOGIDExEQsXLsT333+PLVu24MEHH8SuXbtw4403ora2Fs888wzi4uJw4cIFuSOTPQiiFtTX14uIiAgxdOjQZp9fsWKFACC+/fbbdh+rsrKyxed+/fVXAUBs2LCh3cexxLJlywQAkZaWZtfjWoMl5+y3334TarVaTJkyRVRXVzd5vqamRnzzzTe2iHlNL730kgAg8vPz7X5sSxhztsbS8+wo799cq1atMvv7afny5QKAeO6554ROp2vyfG1trXjvvffEsmXLxOrVq8XBgwfFQw89ZIPUpDQsWuiaFi9eLACI48ePN3nu+uuvF+Hh4aK+vt70WEpKirj7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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x = np.linspace(0, np.max(cascaded_if), N)\n", + "plt.hist(cascaded_if, bins=50, density=True)\n", + "plt.plot(\n", + " x,\n", + " sp.stats.gamma.pdf(x, k_G_iRf, scale=theta_G_iRf),\n", + ")\n", + "plt.hist(\n", + " sp.stats.gamma.rvs(k_G_iRf, scale=theta_G_iRf, size=N),\n", + " bins=50,\n", + " density=True,\n", + " alpha=0.5,\n", + ")\n", + "plt.title(r\"Verification of Combined Channel $G_{\\hat{i},R,f}$\")\n", + "plt.xlabel(r\"$x$\")\n", + "plt.ylabel(r\"PDF $f(x)$\")\n", + "plt.ticklabel_format(axis=\"both\", style=\"sci\", scilimits=(0, 0))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi0AAAHGCAYAAAC4gruuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABUcklEQVR4nO3deXxU5d3//9eZmewbkAAmEHZQ9l0ExK2i4lZsXbAuuP60amvV9i50UanWaJVWe1dwqcXbrwtWBXdR3ABRFCOr7Esg7ARCNsg2c/3+mGQkJpBMMjNnZvJ+Ph7zYObMmXM+c5hk3rmu61zHMsYYRERERMKcw+4CRERERJpCoUVEREQigkKLiIiIRASFFhEREYkICi0iIiISERRaREREJCIotIiIiEhEUGgRERGRiKDQIiIiIhFBoUVEREQigkKLHNMll1xCQkIChw4dOuY6V111FTExMezduzcg+3z++eexLIu8vLw6y1999VX69+9PQkIClmWxfPnyY64bKF9++SX3339/vfcf7P0GSkPH7HhWrlzJ9ddfT/fu3YmPjyc5OZlhw4bxt7/9jYMHD4am6KPcf//9WJZFQUFBo+va+X9SW2dTNfU4+/P+I0Fz/o9WrVrFTTfdRM+ePYmPjycxMZGTTjqJW265ha+//hqAL774grlz5wapagk3Ci1yTDfeeCPl5eW8/PLLDT5fVFTE3LlzufDCC+nYsWNA9nnBBRfw1VdfkZmZ6Vu2f/9+rrnmGnr27Mm8efP46quv6NOnT4PrBtKXX37JtGnT6oWWYO83EI51zI7l2WefZfjw4SxdupTf/e53zJs3j7lz53LZZZfx1FNPceONN4awev9Fwv8JRP5xDqV//OMfDBs2jOXLl3P33Xfz3nvv8eabb3L99dfz6aefctppp1FZWck999xDTk4Ou3btsrtkCQUjcgzV1dUmKyvLDB8+vMHnZ86caQDzzjvvtHhfZWVlx3zuiy++MIB59dVXW7wffzz66KMGMFu3bg3pfgPBn2P25ZdfGqfTac477zxTXl5e7/mKigrz1ltvBaPM47rvvvsMYPbv3x/yffujts7G+HucI+X9N9WsWbOa/PM0ffp0A5jf/e53xu1213u+srLS/POf/zSPPvqoef75582SJUvMDTfcEISqJdwotMhxTZ061QBm5cqV9Z47+eSTTWZmpqmurvYt27Bhg7nyyitN+/btTWxsrDnppJPMv/71rzqvq/1lnJuba37+85+bNm3amBNOOMEYU/8X2+TJkw1Q53b66ac3uK4xxqxdu9ZMmjTJdOjQwcTGxprs7GxzzTXX+L4kNm7caK677jrTq1cvk5CQYLKyssyFF15Y7/3V1vjj22effXbMX76LFi0yZ511lklOTjYJCQlm9OjR5t13321wu6tXrzaTJk0yqamppkOHDub66683hw4datL/SWP7Od4xa8iFF15oXC6X2b59e5P27+97XbFihbn00ktNamqqadu2rbnrrrtMVVWVWbdunTn33HNNcnKy6dq1q3nkkUcafP13331nLrnkEpOSkmJSU1PNVVddZfbt21dn3R//n/h7nJvyuTXGmHfffdcMHjzYxMbGmm7duplHH320yaHF3+Pc1Pfg72e6KcckGMevqaFl7dq1JjY21kycOLFJx0laF3UPyXHdcMMNWJbFf/7znzrL16xZwzfffMPkyZNxOp2+ZSNHjmT16tVMnz6dd999lwsuuIBf//rXTJs2rd62f/azn9GrVy9ee+01nnrqqQb3/+c//5knn3wSgIceeoivvvqKGTNmNLjuihUrGDlyJEuWLOEvf/kLH3zwATk5OVRUVFBZWQnArl27SE9P5+GHH2bevHk8+eSTuFwuRo0axfr1633buummm/jVr34FwJw5c/jqq6/46quvGDZsWIP7XrBgAWeddRZFRUU899xzvPLKK6SkpHDRRRfx6quv1lv/5z//OX369OGNN95gypQpvPzyy9x1110Nbtvf/fhzzNxuN59++inDhw8nOzu70f03571efvnlDB48mDfeeIObb76Zf/zjH9x1111MnDiRCy64gLlz53LWWWfx+9//njlz5tR7/SWXXEKvXr14/fXXuf/++3nzzTc599xzqaqqarTWphznpn5uP/nkE37605+SkpLC7NmzefTRR/nvf//LrFmzGq2jOce5qe+hqZ9pf46JP+v6+3PfmIceeoiqqioee+wxv18rrYDdqUnC3+mnn24yMjJMZWWlb9k999xjALNhwwbfsnPPPdd07tzZFBUV1Xn9HXfcYeLj483BgweNMT/8FXfvvffW21dDf4199tlnBjCvvfbacdc966yzTJs2ber9FX481dXVprKy0vTu3dvcdddddZ47VvdQQzWecsoppkOHDqakpKTOtgcMGGA6d+5sPB5Pnff+t7/9rc42b7vtNhMfH+9b71iaup9jHbMf27NnjwHMpEmTjrtec2qofa/Tp0+v8/ohQ4YYwMyZM8e3rKqqyrRv39787Gc/8y2rff2P/19eeuklA5gXX3zRt+xYLS1NOc5N/dyOGjXKZGVlmSNHjvjWKS4uNu3atWu0paU5x7m5n5Vjfab92V4wjl9TWlrKy8tNcnKyGT16dL3n3G63qaqq8t2O7jYqLy83HTt2PG5r5datWw1gkpKSTEJCgunbt6/55JNPjrn+0T755BNz4oknmtTUVPPwww836TUSHGppkUbdeOONFBQU8PbbbwNQXV3Niy++yLhx4+jduzcA5eXlfPLJJ1xyySUkJiZSXV3tu51//vmUl5ezZMmSOtv9+c9/HrAaDx8+zIIFC7j88stp3779Mderrq7moYceol+/fsTGxuJyuYiNjWXjxo2sXbu2WfsuKyvj66+/5tJLLyU5Odm33Ol0cs0117Bjx456f/FefPHFdR4PGjSI8vJy9u3bF9D9BFpzarjwwgvrPO7bty+WZTFhwgTfMpfLRa9evdi2bVu9fV511VV1Hl9++eW4XC4+++yzRutt7Dg39XNbVlbG0qVL+dnPfkZ8fLxve7UtTMHU2Hvw9zPtz2cvUMevqbZt20ZpaSkjR46s99zgwYOJiYnx3XJycnzPxcXFsWfPHtLS0o657RUrVtCvXz9KS0spKyvj0ksv5eabb25SXXfeeSd//etfKSoq4ve//32T348EXtSFloULF3LRRReRlZWFZVm8+eabfm/DGMNjjz1Gnz59iIuLIzs7m4ceeijwxUaISy+9lLS0NF8z+Pvvv8/evXvrnOlw4MABqqur+d///d86v1hiYmI4//zzAeqduhnIMz0KCwtxu9107tz5uOvdfffd/PnPf2bixIm88847fP311yxdupTBgwdz5MiRZu/bGNPg+8nKygK8x+do6enpdR7HxcUBHLeG5uynMRkZGSQmJrJ169Ymrd+cGtq1a1fncWxsLImJiXW+/GuXl5eX19vuCSecUOexy+UiPT29Se+1sePc1M9tYWEhHo+nXi0N1dcQf4+zP+/B38+0P5+9QB2/pqpdNzU1td5zL7zwAkuXLuWBBx4AYNSoUb7nnnjiCW666abjbnvFihUMGTIEAMuyOPXUUxutrbS0lOTkZL7//nsmT57MxIkTm/xeJDhcdhcQaGVlZQwePJjrr7++2X/J33nnnXz00Uc89thjDBw4kKKioqiZK6E5EhISuPLKK3n22WfZvXs3//nPf0hJSeGyyy7zrdO2bVvfX9u33357g9vp3r17ncf+zG3RmHbt2uF0OtmxY8dx13vxxRe59tpr64XQgoIC2rRp06x9t23bFofDwe7du+s9V3saZkZGRrO2Hez9OJ1OfvKTn/DBBx+wY8eORkNfqN7r0fbs2UOnTp18j6urqzlw4EC9L9TmaOrnNj4+Hsuy2LNnT4P1Ncbf4+yPYHymm6o5P/fHUzt1QkMtbkOHDgXglVdewbKsOq0xK1euZNCgQcfd9ooVKzjllFMA72c1JyeHn/3sZ8d9TXJyMvPnz+eWW25h5cqVTX4fEjxR19IyYcIEHnzwwWN+GCsrK/mf//kfOnXqRFJSEqNGjeLzzz/3Pb927VpmzpzJW2+9xcUXX0z37t0ZMmQIZ599dojeQXi68cYbcbvdPProo7z//vtMmjSJxMRE3/OJiYmceeaZLFu2jEGDBjFixIh6t0B8yRxLQkICp59+Oq+99tpxA6ZlWb6/Fmu999577Ny5s966TWn9AHyfozlz5tRZ1+Px8OKLL9K5c+fjzpHSVMHaz9SpUzHGcPPNN/sGLB+tqqqKd955J6g1HM9LL71U5/F///tfqqurOeOMM1q87aZ+bpOSkjj55JOZM2dOndagkpIS37FpjD/H2R/+fKYDLdA/9z179qRfv368+eabx/wDZMmSJZx00kl1uoKaGlqmTZtGcnIynTp1onfv3sc8AeBoK1euZODAgU1+DxJcUdfS0pjrr7+evLw8Zs+eTVZWFnPnzuW8885j1apV9O7dm3feeYcePXrw7rvvct5552GM4eyzz+Zvf/tbvWbu1mTEiBEMGjSIxx9/HGNMg5NgPfHEE5x66qmMGzeOX/7yl3Tr1o2SkhI2bdrEO++8w6effhrUGv/+979z6qmnMmrUKKZMmUKvXr3Yu3cvb7/9Nk8//TQpKSlceOGFPP/885x00kkMGjSI3NxcHn300Qb/8q39RfXEE08wefJkYmJiOPHEExvcd05ODuPHj+fMM8/kt7/9LbGxscyYMYPVq1f7/jIMhGDsZ/To0cycOZPbbruN4cOH88tf/pL+/ftTVVXFsmXLeOaZZxgwYIBv7Eao3mutOXPm4HK5GD9+PN9//z1//vOfGTx4MJdffnlAtt/Uz+0DDzzAeeedx/jx47nnnntwu9088sgjJCUlNWnGYH+Pc1P585kOhkD/3D/11FOcc845jBw5knvuuYeBAwficDjYsWMH7733Hl9//XWd3z8ej4c1a9YcN7SUlpayZcsW9u3bR7t27Zg+fTovvfRSvbDXkKYEIgkh+8YABx9g5s6d63u8adMmY1mW2blzZ531fvKTn5ipU6caY4y55ZZbTFxcnBk1apRZuHCh+eyzz8yQIUPMmWeeGcrSw9ITTzxhANOvX79jrrN161Zzww03mE6dOpmYmBjTvn17M2bMGPPggw/61jnepFktOXvIGGPWrFljLrvsMpOenm5iY2NNly5dzHXXXeebp6WwsNDceOONpkOHDiYxMdGceuqpZtGiReb0009vcC6TqVOnmqysLONwOJo8T0vt2QmnnHJKvYn3jvXe/Zl4qyn7aerZQ0dbvny5mTx5sunSpYuJjY01SUlJZujQoebee++td0ZWS97r5MmTTVJSUr39n3766aZ///71Xp+bm2suuugik5ycbFJSUsyVV15p9u7dW+e1xzp7qKnHuSmfW2OMefvtt82gQYN8n62HH364yfO01GrqcW7qe2jqZ9qfYxKM4+fPZ3z16tXmF7/4hcnMzDQul8skJyebAQMGmF/+8pdm0aJFdc5eWr9+vcnMzDzu9hYvXuybC8oY70R+aWlpJjc3t9Faxo0bZ95///1G15PQaFWh5b///a/vlLejby6Xy1x++eXGGGNuvvlmA5j169f7Xpebm2sAs27dulC/BREROY7XXnvNnHvuub7HkydPNpMnT66zzowZM8z48ePrLJs4caKZNm3acV9njDFt2rQx+fn5Aa1Zmq9VdQ95PB6cTie5ubm+CdFq1Z6+mZmZicvlqtMv37dvXwC2b99+zO4BEREJvVWrVtXpvtmxYwdXXHFFnXVWrFjBgAED6iwbP348zz//PPfee+8xX5efn49lWSHrapPGWcYYY3cRwWJZFnPnzvWdprZhwwZOPPFEFi5cyLhx4xp8zUcffcS5557Lpk2b6NmzJ/DDqXLr168P+CBDEREJjOrqagYNGsSKFSuIiYkJ+usk9KIutJSWlrJp0ybAe4rc3//+d84880zatWtHly5duPrqq1m8eDHTp09n6NChFBQU8OmnnzJw4EDOP/98PB4PI0eOJDk5mccffxyPx8Ptt99OamoqH330kc3vTkREpPWKutDy+eefc+aZZ9ZbPnnyZJ5//nmqqqp48MEHeeGFF9i5cyfp6emMHj2aadOm+c4W2bVrF7/61a/46KOPSEpKYsKECUyfPr1Vnz0kIiJit6gLLSIiIhKdom5yOREREYlOUXH2kMfjYdeuXaSkpAR8YisREREJDmMMJSUlZGVl4XA03o4SFaFl165dZGdn212GiIiINEN+fn6TTi2PitCSkpICeN90Q1cHFRERkfBTXFxMdna273u8MVERWmq7hFJTUxVaREREIkxTh3ZoIK6IiIhEBIUWERERiQgKLSIiIhIRFFpEREQkIii0iIiISERQaBEREZGIoNAiIiIiEUGhRURERCKCQouIiIhEBIUWERERiQgKLSIiIhIRFFpEREQkIoRFaOnWrRuWZdW73X777XaXJiIiImEiLK7yvHTpUtxut+/x6tWrGT9+PJdddpmNVYmIiEg4CYvQ0r59+zqPH374YXr27Mnpp59uU0UiIiISbsIitBytsrKSF198kbvvvhvLshpcp6KigoqKCt/j4uLiUJUnIhIRuk15j9iM+XWW/ebsPtw25DabKhJpubAY03K0N998k0OHDnHdddcdc52cnBzS0tJ8t+zs7NAVKCIiIrYIu9Dy3HPPMWHCBLKyso65ztSpUykqKvLd8vPzQ1ihiIiI2CGsuoe2bdvGxx9/zJw5c467XlxcHHFxcSGqSkRERMJBWLW0zJo1iw4dOnDBBRfYXYqIiIiEmbAJLR6Ph1mzZjF58mRcrrBqABIREZEwEDah5eOPP2b79u3ccMMNdpciIiIiYShsmjTOOeccjDF2lyEiIiJhKmxaWkRERESOR6FFREREIoJCi4iIiEQEhRYRERGJCAotIiIiEhEUWkRERCQiKLSIiIhIRFBoERERkYig0CIiIiIRIWxmxBURkeA5yX2Qc755mUPzH6M0oQ2reoxma1Z/bhtym92liTSZQouISJSYsXyG735sxgbf/fOqt/JY+UJij3gAaFN2gM4Fm1necywM/iVYVshrFWkOdQ+JiESxQe79TC9fQCwe8jqexNtjbuC73qcBMGTzYvjynzZXKNJ0amkREYlSsaaaf5R/TgyGec6ubD3lGozlYEeH3pQmpHHaynfgk79A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Q0/HPPR0zENPxzy0mnK8m9LCUsv24cixsbEMHz6c+fPrjvifP38+Y8aMsakqERERCTe2t7QA3H333VxzzTWMGDGC0aNH88wzz7B9+3ZuvfVWu0sTERGRMBEWoeWKK67gwIED/OUvf2H37t0MGDCA999/n65du9pdGnFxcdx33331uqMkOHS8Q0/HPPR0zENPxzy0gnW8w2KeFhEREZHG2D6mRURERKQpFFpEREQkIii0iIiISERQaBEREZGIoNACzJgxg+7duxMfH8/w4cNZtGjRcddfsGABw4cPJz4+nh49evDUU0+FqNLo4M/xnjNnDuPHj6d9+/akpqYyevRoPvzwwxBWGx38/YzXWrx4MS6XiyFDhgS3wCjk7zGvqKjgj3/8I127diUuLo6ePXvyn//8J0TVRj5/j/dLL73E4MGDSUxMJDMzk+uvv54DBw6EqNrIt3DhQi666CKysrKwLIs333yz0dcE5LvTtHKzZ882MTEx5tlnnzVr1qwxd955p0lKSjLbtm1rcP0tW7aYxMREc+edd5o1a9aYZ5991sTExJjXX389xJVHJn+P95133mkeeeQR880335gNGzaYqVOnmpiYGPPdd9+FuPLI5e8xr3Xo0CHTo0cPc84555jBgweHptgo0ZxjfvHFF5tRo0aZ+fPnm61bt5qvv/7aLF68OIRVRy5/j/eiRYuMw+EwTzzxhNmyZYtZtGiR6d+/v5k4cWKIK49c77//vvnjH/9o3njjDQOYuXPnHnf9QH13tvrQcvLJJ5tbb721zrKTTjrJTJkypcH1/+d//secdNJJdZbdcsst5pRTTglajdHE3+PdkH79+plp06YFurSo1dxjfsUVV5g//elP5r777lNo8ZO/x/yDDz4waWlp5sCBA6EoL+r4e7wfffRR06NHjzrL/vnPf5rOnTsHrcZo1pTQEqjvzlbdPVRZWUlubi7nnHNOneXnnHMOX375ZYOv+eqrr+qtf+655/Ltt99SVVUVtFqjQXOO9495PB5KSkpo165dMEqMOs095rNmzWLz5s3cd999wS4x6jTnmL/99tuMGDGCv/3tb3Tq1Ik+ffrw29/+liNHjoSi5IjWnOM9ZswYduzYwfvvv48xhr179/L6669zwQUXhKLkVilQ351hMSOuXQoKCnC73fUuzNixY8d6F3CstWfPngbXr66upqCggMzMzKDVG+mac7x/bPr06ZSVlXH55ZcHo8So05xjvnHjRqZMmcKiRYtwuVr1r4hmac4x37JlC1988QXx8fHMnTuXgoICbrvtNg4ePKhxLY1ozvEeM2YML730EldccQXl5eVUV1dz8cUX87//+7+hKLlVCtR3Z6tuaallWVadx8aYessaW7+h5dIwf493rVdeeYX777+fV199lQ4dOgSrvKjU1GPudrv5xS9+wbRp0+jTp0+oyotK/nzOPR4PlmXx0ksvcfLJJ3P++efz97//neeff16tLU3kz/Fes2YNv/71r7n33nvJzc1l3rx5bN26Vde7C7JAfHe26j+jMjIycDqd9dL4vn376iXCWieccEKD67tcLtLT04NWazRozvGu9eqrr3LjjTfy2muvcfbZZwezzKji7zEvKSnh22+/ZdmyZdxxxx2A9wvVGIPL5eKjjz7irLPOCkntkao5n/PMzEw6depEWlqab1nfvn0xxrBjxw569+4d1JojWXOOd05ODmPHjuV3v/sdAIMGDSIpKYlx48bx4IMPqsU8CAL13dmqW1piY2MZPnw48+fPr7N8/vz5jBkzpsHXjB49ut76H330ESNGjCAmJiZotUaD5hxv8LawXHfddbz88svqc/aTv8c8NTWVVatWsXz5ct/t1ltv5cQTT2T58uWMGjUqVKVHrOZ8zseOHcuuXbsoLS31LduwYQMOh4POnTsHtd5I15zjffjwYRyOul9/TqcT+OGvfwmsgH13+jVsNwrVnir33HPPmTVr1pjf/OY3JikpyeTl5RljjJkyZYq55pprfOvXnrZ11113mTVr1pjnnntOpzz7wd/j/fLLLxuXy2WefPJJs3v3bt/t0KFDdr2FiOPvMf8xnT3kP3+PeUlJiencubO59NJLzffff28WLFhgevfubW666Sa73kJE8fd4z5o1y7hcLjNjxgyzefNm88UXX5gRI0aYk08+2a63EHFKSkrMsmXLzLJlywxg/v73v5tly5b5TjMP1ndnqw8txhjz5JNPmq5du5rY2FgzbNgws2DBAt9zkydPNqeffnqd9T///HMzdOhQExsba7p162ZmzpwZ4oojmz/H+/TTTzdAvdvkyZNDX3gE8/czfjSFlubx95ivXbvWnH322SYhIcF07tzZ3H333ebw4cMhrjpy+Xu8//nPf5p+/fqZhIQEk5mZaa666iqzY8eOEFcduT777LPj/m4O1nenZYzawkRERCT8teoxLSIiIhI5FFpEREQkIii0iIiISERQaBEREZGIoNAiIiIiEUGhRURERCKCQouIiIhEBIUWERGRVmThwoVcdNFFZGVlYVkWb775ZtD3uXPnTq6++mrS09NJTExkyJAh5Obm+r0dhRYREZFWpKysjMGDB/Ovf/0rJPsrLCxk7NixxMTE8MEHH7BmzRqmT59OmzZt/N6WZsQVERFppSzLYu7cuUycONG3rLKykj/96U+89NJLHDp0iAEDBvDII49wxhlnNGsfU6ZMYfHixSxatKjF9aqlRURERHyuv/56Fi9ezOzZs1m5ciWXXXYZ5513Hhs3bmzW9t5++21GjBjBZZddRocOHRg6dCjPPvtss7al0CIiYemVV14hPj6enTt3+pbddNNNDBo0iKKiIhsrE4lemzdv5pVXXuG1115j3Lhx9OzZk9/+9receuqpzJo1q1nb3LJlCzNnzqR37958+OGH3Hrrrfz617/mhRde8HtbCi0iEpYmTZrEiSeeSE5ODgDTpk3jww8/5IMPPiAtLc3m6kSi03fffYcxhj59+pCcnOy7LViwgM2bNwOQl5eHZVnHvd1xxx2+bXo8HoYNG8ZDDz3E0KFDueWWW7j55puZOXOm3/W5AvZORUQCyLIs/vrXv3LppZeSlZXFE088waJFi+jUqZPdpYlELY/Hg9PpJDc3F6fTWee55ORkADp16sTatWuPu522bdv67mdmZtKvX786z/ft25c33njD7/oUWkQkbF144YX069ePadOm8dFHH9G/f3+7SxKJakOHDsXtdrNv3z7GjRvX4DoxMTGcdNJJTd7m2LFjWb9+fZ1lGzZsoGvXrn7Xp9AiImHrww8/ZN26dbjdbjp27Gh3OSJRobS0lE2bNvkeb926leXLl9OuXTv69OnDVVddxbXXXsv06dMZOnQoBQUFfPrppwwcOJDzzz/f7/3dddddjBkzhoceeojLL7+cb775hmeeeYZnnnnG723plGcRCUvfffcdZ5xxBk8++SSzZ88mMTGR1157ze6yRCLe559/zplnnllv+eTJk3n++eepqqriwQcf5IUXXmDnzp2kp6czevRopk2bxsCBA5u1z3fffZepU6eyceNGunfvzt13383NN9/s93YUWkQk7OTl5TF69Gh+9atf8Yc//IHc3FxGjhzJ0qVLGT58uN3liYhNFFpEJKwcPHiQsWPHctppp/H000/7lv/0pz+loqKCefPm2VidiNhJoUVEREQiguZpERERkYig0CIiIiIRQaFFREREIoJCi4iIiEQEhRYRERGJCAotIiIiEhEUWkRERCQiKLSIiIhIRFBoERERkYig0CIiIiIRQaFFREREIsL/D7RQxB4wdWOmAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x = np.linspace(0, np.max(cascaded_if_hat), N)\n", + "plt.hist(cascaded_if_hat, bins=50, density=True)\n", + "plt.plot(\n", + " x,\n", + " sp.stats.gamma.pdf(x, k_G_iRf_hat, scale=theta_G_iRf_hat),\n", + ")\n", + "plt.hist(\n", + " sp.stats.gamma.rvs(k_G_iRf_hat, scale=theta_G_iRf_hat, size=N),\n", + " bins=50,\n", + " density=True,\n", + " alpha=0.5,\n", + ")\n", + "plt.title(r\"Verification of Combined Channel $G_{\\hat{i},R,f}$\")\n", + "plt.xlabel(r\"$x$\")\n", + "plt.ylabel(r\"PDF $f(x)$\")\n", + "plt.ticklabel_format(axis=\"both\", style=\"sci\", scilimits=(0, 0))\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Effective Channel Gain $Z_{i,f} = |H_{i,f}|^2 = (h_{i,f} + G_{i,R,f})^2$" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [], + "source": [ + "mu_Z_if = (\n", + " fun_mu_G_iRf(2, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t)\n", + " + fun_mu_h_if(2, m_if, omega_if)\n", + " + (\n", + " 2\n", + " * fun_mu_G_iRf(1, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t)\n", + " * fun_mu_h_if(1, m_if, omega_if)\n", + " )\n", + ")\n", + "\n", + "mu_Z_if_2 = (\n", + " fun_mu_G_iRf(4, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t)\n", + " + fun_mu_h_if(4, m_if, omega_if)\n", + " + (\n", + " 6\n", + " * fun_mu_G_iRf(2, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t)\n", + " * fun_mu_h_if(2, m_if, omega_if)\n", + " )\n", + " + (\n", + " 4\n", + " * fun_mu_h_if(3, m_if, omega_if)\n", + " * fun_mu_G_iRf(1, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t)\n", + " )\n", + " + (\n", + " 4\n", + " * fun_mu_h_if(1, m_if, omega_if)\n", + " * fun_mu_G_iRf(3, m_iR, omega_iR, m_Rf, omega_Rf, K // 2, beta_t)\n", + " )\n", + ")\n", + "\n", + "mu_Z_if_hat = (\n", + " fun_mu_G_iRf(2, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t)\n", + " + fun_mu_h_if(2, m_if_hat, omega_if_hat)\n", + " + (\n", + " 2\n", + " * fun_mu_G_iRf(1, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t)\n", + " * fun_mu_h_if(1, m_if_hat, omega_if_hat)\n", + " )\n", + ")\n", + "\n", + "mu_Z_if_hat_2 = (\n", + " fun_mu_G_iRf(4, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t)\n", + " + fun_mu_h_if(4, m_if_hat, omega_if_hat)\n", + " + (\n", + " 6\n", + " * fun_mu_G_iRf(2, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t)\n", + " * fun_mu_h_if(2, m_if_hat, omega_if_hat)\n", + " )\n", + " + (\n", + " 4\n", + " * fun_mu_h_if(3, m_if_hat, omega_if_hat)\n", + " * fun_mu_G_iRf(1, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t)\n", + " )\n", + " + (\n", + " 4\n", + " * fun_mu_h_if(1, m_if_hat, omega_if_hat)\n", + " * fun_mu_G_iRf(3, m_iR_hat, omega_iR_hat, m_Rf, omega_Rf, K // 2, beta_t)\n", + " )\n", + ")\n", + "\n", + "k_Z_if = mu_Z_if**2 / (mu_Z_if_2 - mu_Z_if**2) # Shape parameter of Z_if\n", + "theta_Z_if = (mu_Z_if_2 - mu_Z_if**2) / mu_Z_if # Scale parameter of Z_if\n", + "\n", + "k_Z_if_hat = mu_Z_if_hat**2 / (\n", + " mu_Z_if_hat_2 - mu_Z_if_hat**2\n", + ") # Shape parameter of Z_if_hat\n", + "theta_Z_if_hat = (\n", + " mu_Z_if_hat_2 - mu_Z_if_hat**2\n", + ") / mu_Z_if_hat # Scale parameter of Z_if_hat" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHGCAYAAACYbuRTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABXlElEQVR4nO3deVwTZ/4H8M8kkHAHUUBQxKOKikcRFFGx9ULxaO2l9vCqtutqW63b3ZZ2e9iLuv66q1ZptWtlrVtE69mtF7YKWqn1ALVKrSgKYhBROZUrmd8fgdTIIYGEScjn/XrNi8zkycx3kigfnnlmRhBFUQQRERGRDZJJXQARERGRVBiEiIiIyGYxCBEREZHNYhAiIiIim8UgRERERDaLQYiIiIhsFoMQERER2SwGISIiIrJZDEJERERksxiEiIiIyGYxCJHJPfbYY3B0dER+fn6dbZ599lnY29vj2rVrJtlmbGwsBEHApUuXDJbHx8cjMDAQjo6OEAQBqampdbY1lcOHD+O9996rsf/m3q6p1Pae1aZ6f+qaDhw4cN/1NnRbTWGpn8epU6cwc+ZMdOrUCQ4ODnBxcUG/fv3wj3/8Azdv3tS3e++99yAIAvLy8iSp09SMfd9PnTqFWbNmoUuXLnB0dISjoyO6du2KP/3pTzh27Fiz1NBQnp6e9f6bEAQBM2fOxKFDh7B161aTbpsaz07qAqjlmTVrFrZt24ZvvvkGc+fOrfF8QUEBtm7divHjx8Pb29sk2xw3bhySk5Ph4+OjX3b9+nVMnToVY8aMQUxMDJRKJbp164Z27drVaGtKhw8fxqJFizBjxgy4u7vXW6Olqes9q8/atWvRvXv3Gst79uxZ73pbtWpl9LYawxI/jy+//BJz585FQEAA/vrXv6Jnz56oqKjAsWPH8MUXXyA5OZm/KAGsWrUKL730EgICAjB//nwEBgZCEASkpaUhLi4O/fv3R3p6Orp06WLUes3x2Ws0Gnz33Xe1Pnf58mU8//zz0Gq1mDlzJv7yl79AFEWEhobC19fXZDVQI4lEJlZZWSn6+vqKwcHBtT7/+eefiwDE7777rsnbKikpqfO5Q4cOiQDE+Pj4Jm/HGEuWLBEBiBkZGc26XVMw5j1bu3atCEA8evRoo9bbXJ+PpX0ehw8fFuVyuThmzBixtLS0xvNlZWXi9u3b9fPvvvuuCEC8fv16c5ZpNtXfm/t9HocOHRJlMpk4YcIEsaysrNY2GzduFLOzs81QpelkZmaKnTp1EpVKpbh7925xyZIlYmxsrPjzzz+Lzz//vNTlkSiKDEJkFlFRUSIA8dSpUzWeGzBggOjj4yNWVlbql/3+++/i008/LXp6eooKhULs3r27uGLFCoPXVf9COH78uPjEE0+I7u7uYtu2bUVRrPmf6/Tp00UABtNDDz1Ua1tRFMW0tDRxypQpopeXl6hQKEQ/Pz9x6tSp+l9U58+fF2fMmCE+8MADoqOjo+jr6yuOHz++xv5V13jvtH///jp/ARw8eFAcPny46OLiIjo6OophYWHi//73v1rX++uvv4pTpkwR3dzcRC8vL3HmzJlifn5+gz6T+22nvvesNg0NQrWt19/fv95tNeT7UK2+z86Yz2Pr1q0iAHHfvn01thETEyMCEE+ePNmoGu82fvx40c7OTszMzLxvW1E07rM39nt6v3Ua+71ryHvS0CA0duxY0d7eXrx69WqD3idj9r+2Gkzxb+xeV65cEbt06SIqlUpx586djVoHmR/HCJFZPP/88xAEAV999ZXB8rNnz+KXX37B9OnTIZfL9cv69++PX3/9FZ9++in+97//Ydy4cXjllVewaNGiGut+/PHH8cADD2DTpk344osvat3+22+/jZUrVwIAPv74YyQnJyMmJqbWtidPnkT//v3x888/4/3338euXbsQHR2NsrIylJeXAwCuXr2K1q1b45NPPsHu3buxcuVK2NnZITQ0FOfOndOva/bs2Xj55ZcBAFu2bEFycjKSk5PRr1+/WredmJiI4cOHo6CgAGvWrEFcXBxcXV0xYcIExMfH12j/xBNPoFu3bti8eTPeeOMNfPPNN3j11VdrXbex2zHmPbubRqNBZWWlwaTRaPTP17be77//vs5tGfN9uN9nZ8znMX78eHh5eWHt2rU1nouNjUW/fv3Qp08fo2u897368ccfERwcDD8/v/u+t3dryGff0O+pMetsaLvGvie10Wg02L9/P0JCQow6fGXs/temsf/Gaqtl2LBhyMrKwrfffovIyEij10HNROokRi3XQw89JLZp00YsLy/XL/vLX/4iAhB///13/bLRo0eL7du3FwsKCgxe/9JLL4kODg7izZs3RVH84y+2d955p8a2avsLb//+/SIAcdOmTfW2HT58uOju7i7m5uY2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sGAB/P394ejoiEGDBuHo0aNGr4dBiIiIiJqspKQEffv2xYoVK5ple7Nnz0ZCQgK+/vprnD59GhERERg5ciSys7ONWg+vLE1EREQmJQgCtm7diokTJ+qXlZeX4+9//zv++9//Ij8/H7169cLixYtr3OqnIe7cuQNXV1ds374d48aN0y9/8MEHMX78eHz44YcNXhfvNUZERERmN3PmTFy6dAkbNmyAr68vtm7dijFjxuD06dPo2rWrUeuqrKyERqOBg4ODwXJHR0ccOnTIqHXx0BgR2ZS4uDg4ODgYdJ/Pnj0bffr0QUFBgYSVEbVcFy5cQFxcHDZt2oTw8HB06dIFr732GoYMGYK1a9cavT5XV1eEhYXhgw8+wNWrV6HRaLB+/XocOXIEarXaqHUxCBGRTZkyZQoCAgIQHR0NAFi0aBH27NmDXbt2QaVSSVwdUct04sQJiKKIbt26wcXFRT8lJibiwoULAIBLly5BEIR6p5deekm/zq+//hqiKKJdu3ZQKpVYvnw5nnnmGcjlcqNq46ExIrIpgiDgo48+wpNPPglfX18sW7YMBw8eRLt27aQujajF0mq1kMvlOH78eI2g4uLiAgBo164d0tLS6l1Pq1at9I+7dOmCxMRElJSUoLCwED4+Ppg8eTI6depkVG0MQkRkc8aPH4+ePXti0aJF2Lt3LwIDA6UuiahFCwoKgkajQW5uLsLDw2ttY29vj+7duxu9bmdnZzg7O+PWrVvYs2cP/vGPfxj1egYhIrI5e/bswW+//QaNRgNvb2+pyyFqEYqLi5Genq6fz8jIQGpqKjw8PNCtWzc8++yzmDZtGj799FMEBQUhLy8PP/74I3r37o2xY8cavb09e/ZAFEUEBAQgPT0df/3rXxEQEICZM2catR6ePk9ENuXEiRN4+OGHsXLlSmzYsAFOTk7YtGmT1GURWb0DBw5g2LBhNZZPnz4dsbGxqKiowIcffoh169YhOzsbrVu3RlhYGBYtWoTevXsbvb2NGzciKioKV65cgYeHB5544gl89NFHRo/1YxAiIptx6dIlhIWF4eWXX8abb76J48ePo3///jh69CiCg4OlLo+IJMAgREQ24ebNmxg8eDCGDh2KVatW6Zc/+uijKCsrw+7duyWsjoikwiBERERENovXESIiIiKbxSBERERENotBiIiIiGwWgxARERHZLAYhIiIislkMQkRERGSzGISIiIjIZjEIERERkc1iECIiIiKbxSBERERENotBiIiIiGzW/wMA6okmhHISZAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x = np.linspace(0, np.max(H_if) ** 2, N)\n", + "plt.hist(H_if**2, bins=50, density=True)\n", + "plt.plot(\n", + " x,\n", + " sp.stats.gamma.pdf(x, k_Z_if, scale=theta_Z_if),\n", + ")\n", + "plt.hist(\n", + " sp.stats.gamma.rvs(k_Z_if, scale=theta_Z_if, size=N),\n", + " bins=50,\n", + " density=True,\n", + " alpha=0.5,\n", + ")\n", + "plt.title(r\"Verification of Effective Channel Gain $Z_{\\hat{i},f}$\")\n", + "plt.xlabel(r\"$x$\")\n", + "plt.ylabel(r\"PDF $f(x)$\")\n", + "plt.ticklabel_format(axis=\"both\", style=\"sci\", scilimits=(0, 0))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHGCAYAAACYbuRTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABXwElEQVR4nO3deXwTZf4H8M8kbdJSaKCUXlAKcpQbSwulICgglXIorivgwY3+WDxA1l2tN4oi67FFAUVFuixrOeR0BaEoUFiKAlJAqNBytZSUUgq9oEeS5/dH2kjoQdMmnRyf9+s1r2QmTybfSVLy4ZlnZiQhhAARERGRC1LIXQARERGRXBiEiIiIyGUxCBEREZHLYhAiIiIil8UgRERERC6LQYiIiIhcFoMQERERuSwGISIiInJZDEJERETkshiEiIiIyGUxCJHVPfzww/D09MT169drbPPEE0/A3d0dly9ftsprxsfHQ5IknD9/3mz5mjVr0L17d3h6ekKSJKSkpNTY1lr279+Pt956q8r22/p1raW696w6ldtT07R79+47rreur9UQ9vp5HDt2DFOnTkX79u3h4eGBpk2bok+fPvjHP/6BvLw8U7u33noLkiQhNzdXljqtzdL3/dixY5g+fTo6dOgAT09PeHp6olOnTvi///s/HDp0qFFqqKtWrVrV+jchSRKmTp2Kffv2YePGjVZ9bao/N7kLIOczffp0bNq0Cd988w1mzZpV5fH8/Hxs3LgRo0ePhr+/v1Vec9SoUUhOTkZgYKBp2ZUrVzBx4kSMGDECS5cuhVqtRufOndG6desqba1p//79mDdvHqZMmYLmzZvXWqO9qek9q82KFSvQpUuXKsu7detW63pbtGhh8WvVhz1+Hl9++SVmzZqF0NBQ/O1vf0O3bt1QXl6OQ4cO4fPPP0dycjJ/KAEsW7YMzz77LEJDQzF79mx0794dkiQhNTUVCQkJ6Nu3L9LT09GhQweL1muLz16v1+O7776r9rELFy5g2rRpMBgMmDp1Kv76179CCIHIyEgEBQVZrQaqJ0FkZTqdTgQFBYnw8PBqH//ss88EAPHdd981+LWKi4trfGzfvn0CgFizZk2DX8cSH3zwgQAgzp0716ivaw2WvGcrVqwQAMTBgwfrtd7G+nzs7fPYv3+/UCqVYsSIEaKkpKTK46WlpWLz5s2m+TfffFMAEFeuXGnMMm2m8ntzp89j3759QqFQiDFjxojS0tJq26xdu1ZkZWXZoErrycjIEO3btxdqtVr88MMP4oMPPhDx8fHiwIEDYtq0aXKXR0IIBiGyidjYWAFAHDt2rMpj/fr1E4GBgUKn05mWnT59Wjz22GOiVatWQqVSiS5duojFixebPa/yB+Hw4cPikUceEc2bNxcBAQFCiKr/uE6ePFkAMJvuvffeatsKIURqaqqYMGGC8PPzEyqVSgQHB4uJEyeafqjS0tLElClTRMeOHYWnp6cICgoSo0ePrrJ9lTXePu3atavGH4C9e/eKoUOHiqZNmwpPT08RFRUl/vvf/1a73t9++01MmDBBeHt7Cz8/PzF16lRx/fr1On0md3qd2t6z6tQ1CFW33pCQkFpfqy7fh0q1fXaWfB4bN24UAMTOnTurvMbSpUsFAHH06NF61Xir0aNHCzc3N5GRkXHHtkJY9tlb+j290zot/d7V5T2paxAaOXKkcHd3F5cuXarT+2TJ9ldXgzX+xm538eJF0aFDB6FWq8XWrVvrtQ6yPY4RIpuYNm0aJEnC119/bbb85MmT+OWXXzB58mQolUrTsr59++K3337DRx99hP/+978YNWoUnn/+ecybN6/Kuv/0pz+hY8eOWLduHT7//PNqX//111/HkiVLAADvvfcekpOTsXTp0mrbHj16FH379sWBAwfw9ttvY9u2bViwYAFKS0tRVlYGALh06RJatmyJ999/Hz/88AOWLFkCNzc3REZG4tSpU6Z1zZgxA8899xwAYMOGDUhOTkZycjL69OlT7Wvv2bMHQ4cORX5+PpYvX46EhAQ0a9YMY8aMwZo1a6q0f+SRR9C5c2esX78eL7/8Mr755hu88MIL1a7b0tex5D27lV6vh06nM5v0er3p8erW+/3339f4WpZ8H+702VnyeYwePRp+fn5YsWJFlcfi4+PRp08f9OrVy+Iab3+vfvrpJ4SHhyM4OPiO7+2t6vLZ1/V7ask669quvu9JdfR6PXbt2oWIiAiLdl9Zuv3Vqe/fWHW1DBkyBJmZmfj2228RExNj8TqokcidxMh53XvvvcLX11eUlZWZlv31r38VAMTp06dNyx544AHRpk0bkZ+fb/b8Z599Vnh4eIi8vDwhxB//Y3vjjTeqvFZ1/8PbtWuXACDWrVtXa9uhQ4eK5s2bi5ycnDpvm06nE2VlZaJTp07ihRdeMHuspl0x1dXYv39/4efnJwoLC83W3aNHD9GmTRthMBjMtv0f//iH2TpnzZolPDw8TO1qUtfXqek9q07l9lQ3KZVKs7bVrbem16rr90GIun12lnwec+fOFZ6enmY9ACdPnhQAxKefflqvGm+VnZ0tAIgJEybUWO/tGvLZ1/Q9res6LXntur4ndekRqu190ul0ory83DTVZ/tr6xGq79/YrbRarQgNDRXu7u5muzkrlZSUCH9//zv2NP34448iNDRUeHt7i/fff7/Or0+WYY8Q2cz06dORm5uLLVu2AAB0Oh1WrVqFQYMGoVOnTgCAkpIS/Pjjj3j44YfRpEkTs16FkSNHoqSkBAcOHDBb7yOPPGK1Gm/cuIE9e/Zg3LhxaNWqVY3tdDod3nvvPXTr1g0qlQpubm5QqVRIS0tDampqvV67uLgYP//8M/785z+jadOmpuVKpRITJ07ExYsXq/wv9sEHHzSb79WrF0pKSpCTk2PV17HEypUrcfDgQbPp559/rte6LPk+1PWzs8S0adNw8+ZNs964FStWQK1W4/HHH7e4Rmuqy2dv6fe0rt+nO7VrzPckPDwc7u7upumjjz6q9/ZXpz5/Y7e6fPkyhg4dirNnz2Lt2rVV1gcAarUa2dnZ0Gg0ta5r9uzZePfdd5Gfn4+XXnqpTq9PlmMQqqOkpCSMGTMGQUFBkCQJmzZtsngda9euxd13340mTZogJCQEH3zwgfULtSN//vOfodFoTLsatm7disuXL2P69OmmNlevXoVOp8Onn35q9o+bu7s7Ro4cCQBVDhu25pEe165dg16vR5s2bWptN3fuXLz++usYO3YsvvvuO/z88884ePAgevfujZs3b9b7tYUQ1W5P5ZEkV69eNVvesmVLs3m1Wg0AtdZQn9exRNeuXREREWE2hYeH12tdlnwf6vrZWaJ79+7o27ev6Tur1+uxatUqPPTQQ/Dx8bG4xtv5+vqiSZMmOHfunMW11eWzt/R7Wtfv053aNeQ9qY6vry88PT1x4cKFKo998803OHjwoOk/WLeyxt9pff7GKl25cgXDhg1DWloaVq9ejbFjx1bbbtGiRZgxY0aN6ykqKkLTpk1x4sQJTJ48ucb1kHXw8Pk6Ki4uRu/evTF16tR69Uhs27YNTzzxBD799FNER0cjNTUVM2bMgKenJ5599lkbVCw/T09PPPbYY/jyyy+h1Wrx9ddfo1mzZnj00UdNbVq0aGHqmXjmmWeqXU/79u3N5iVJslqNPj4+UCqVuHjxYq3tVq1ahUmTJuG9994zW56bm2t2SLYlWrRoAYVCAa1WW+WxS5cuATD+IDRUY72ONVjyfajrZ2epqVOnYtasWUhNTcXZs2eh1WoxderUetV4O6VSiWHDhmHbtm24ePGiVUMcYJvvaV005D2pjlKpxNChQ7Fjxw5otVqzEF95WobqzgEk1/ZXvsbQoUNx6tQpfPPNN/jTn/5UY9tjx46ZxptVp2nTpkhMTMT//d//4dixY7Yol27BHqE6iomJwfz582v8cpeVleHvf/87WrduDS8vL0RGRpqdUO7f//43xo4di5kzZ+Kuu+7CqFGj8NJLL2HhwoUQQjTSVjS+6dOnQ6/X44MPPsDWrVsxYcIENGnSxPR4kyZNMGTIEBw5cgS9evWq0rMQERFR5X9o1uTp6Yl7770X69atq/V/rJIkmf5nWOn7779HVlZWlbZ1/R9k5fdkw4YNZm0NBgNWrVqFNm3aWOW8Oo31OtZgyfehrp+dJf+jB4DHHnsMHh4eiI+PR3x8PFq3bo3o6Oh61Vid2NhYCCHw1FNPmQbj36q8vLzG89HciSXfU2uyxd9xbGws9Ho9Zs6cifLy8jo9R67tv3r1Ku6//36kpqZi1apVZv/Zq86dglBlm549e1qzTKoBe4SsZOrUqTh//jxWr16NoKAgbNy4ESNGjMDx48fRqVMnlJaWmgUAwPgP+cWLF3HhwgW0a9dOnsJtLCIiAr169UJcXByEEGa7xSotWrQI99xzDwYNGoS//OUvaNeuHQoLC5Geno7vvvsOP/30k01r/Pjjj3HPPfcgMjISL7/8Mjp27IjLly9jy5YtWLZsGZo1a4bRo0cjPj4eXbp0Qa9evXD48GF88MEH1f6PvvIfr0WLFmHy5Mlwd3dHaGhota+9YMECDB8+HEOGDMGLL74IlUqFpUuX4rfffkNCQoLVer9s+Tq//fYbdDpdleUdOnSo19gdS74PdfnsLPk8AKB58+Z4+OGHER8fj+vXr+PFF1+EQmH+f8aGfGejoqLw2WefYdasWQgPD8df/vIXdO/eHeXl5Thy5Ai++OIL9OjRA2PGjLH4vbPke2pt1v47HjhwIJYsWYLnnnsOffr0wdNPP43u3bubejfXr18PAPD29jY9R47tLy4uxvDhw3H06FE8//zzCAkJqXY8VNOmTdGjRw8YDAacPHmyTkHoTm3ISmQdqu2gAIiNGzea5tPT04UkSVVO7DVs2DARGxsrhBBi2bJlokmTJmLnzp1Cr9eLU6dOiS5duggAYv/+/Y1ZfqNbtGiRACC6detWY5tz586JadOmidatWwt3d3fRqlUrMWDAADF//nxTm9pOLNeQo8aEMB4Z9Oijj4qWLVsKlUol2rZtK6ZMmWI6j9C1a9fE9OnThZ+fn2jSpIm45557xN69e8W9995b7bl2YmNjRVBQkFAoFHU+j5CXl5fw9PQU/fv3r3KyyZq2va7nZKnr61jrqDEA4ssvv6x1vbW9Vl2+D5Xu9NkJYdnnIYQQO3bsMG3HrUc41rfG6qSkpIjJkyeLtm3bCpVKJby8vERYWJh44403zI6Cs+Szr+v3tK7rtPR7V5f3xJLvbOX7NHXqVNNJCT08PETHjh3FpEmTxI8//mjWtq7bX9tRY5b+jSUmJtb6d1A5VR4Bd+rUKREYGHjH7R40aBDPPdRIJCGceL+MjUiShI0bN5oGsK1btw7jxo2Dl5eXWbvS0lL86U9/wpo1ayCEwMsvv4xPPvkE5eXl8Pb2xuzZs/HWW2/h559/Rr9+/WTYEiIiakzffvstvvrqK/zwww8AgClTpgAwnqvqVi1atMDx48cbpTfP1XHXmBUYDAYolUocPnzYdJLASpWHK0uShIULF+K9995DdnY2WrVqhR9//BEAnHa3GBERmTt+/LjZLq+LFy9i/PjxZm0yMzMhSRJDUCNhELKCsLAw6PV65OTkYNCgQbW2VSqVaN26NQAgISEBUVFR8PPza4wyiYhIZreeZVun0+HSpUumXqFKwcHByMvLa+TKXBeDUB0VFRUhPT3dNH/u3DmkpKTAx8cHnTt3xhNPPIFJkybho48+QlhYGHJzc/HTTz+hZ8+eGDlyJHJzc/Htt9/ivvvuQ0lJCVasWIF169Zhz549Mm4VERHJxc3NDSdPnpS7DJfHMUJ1tHv3bgwZMqTK8smTJyM+Ph7l5eWYP38+Vq5ciaysLLRs2RJRUVGYN28eevbsidzcXIwZMwbHjx+HEAJRUVF49913ERkZKcPWEBEREcAgRERERC6MJ1QkIiIil8UxQrUwGAy4dOkSmjVrZtXLOhAREZHtCCFQWFiIoKCgKidEvR2DUC0uXbqE4OBgucsgIiKiesjMzLzjaQgYhGrRrFkzAMY38tbTuBMREZH9KigoQHBwsOl3vDYMQrWo3B3m7e3NIERERORg6jKshYOliYiIyGUxCBEREZHLYhAiIiIil8UgRERERC6LQYiIiIhcFoMQERERuSwGISIiInJZDEJERETkshiEiIiIyGUxCBEREZHLYhAiIiIil8UgRERERC6LQYiIiIhcFoOQ3HLTgezf5K6CiIjIJTEIyenyCeCzKODze4CTW+SuhoiIyOUwCMnpcDygLwMggF3vAkLIXREREZFLYRCSU9avf9y/8juQfVy+WoiIiFwQg5BcDAZj+AEAnw7G29M/yFcPERGRC2IQksuNq0BZkfF+/78Yb8/skq8eIiIiF8QgJJcbucZbzxbAXfcZ71/6FdCVylYSERGRq2EQkktxRRBq4gu07Ag0aQnoSgDtUXnrIiIiciEMQnKp7BHyagVIEhAcaZzPOCBfTURERC6GQUgulT1CXi2Nt8H9jLdZh+Sph4iIyAUxCMmltAAAkFqsxdKUpdhyIxMAkH9hL5amLJWzMiIiIpfBICSX8pvGGzd3AMCV5oEAAE1xHlTlJbKVRURE5EoYhORSEYR0ShUAoFTlhUJPDQCgZb5WtrKIiIhcCYOQXMpvAAB0SjfToiua1gCAVtezZCmJiIjI1bjduQnZREWP0K6z+Vh+8TQAQFemwvMArvz+O9q9/D0A4Pz7o+SqkIiIyOmxR0guFT1CJbdk0ZMK4xFkXQ15spRERETkahiE5FLRI3RT+iMI/a7wAQDcZciHG3SylEVERORKGITkUhGESqA0LbokeaEIblDBgHZStlyVERERuQwGIblU7Bq7tUcIkoR0RQsAQKh0UY6qiIiIXAqDkFwqLq5aekuPEACkKZoDADorGISIiIhsjUFILgbjGCDdbR9BWkWPUGcps9FLIiIicjUMQnKpCEIGSTJbfLqyR4i7xoiIiGyOQUguNfQIVY4RaidlQ42yRi+LiIjIldhFEEpKSsKYMWMQFBQESZKwadOmWttPmTIFkiRVmbp3725qEx8fX22bkhI7uY6XwQAA0MO8RyhH8sR1qKCUBO6SeKkNIiIiW7KLIFRcXIzevXtj8eLFdWq/aNEiaLVa05SZmQkfHx88+uijZu28vb3N2mm1Wnh4eNhiEyxXQ4/QrUeOcZwQERGRbdnFJTZiYmIQExNT5/YajQYajcY0v2nTJly7dg1Tp041aydJEgICAqxWp1VVjhG6rUcIMI4TijBc5pFjRERENmYXPUINtXz5ctx///0ICQkxW15UVISQkBC0adMGo0ePxpEjR2pdT2lpKQoKCswmm6nsEZKqfgR/HDnGIERERGRLDh+EtFottm3bhhkzZpgt79KlC+Lj47FlyxYkJCTAw8MDAwcORFpaWo3rWrBggam3SaPRIDg42HaFCz2AqmOEACC94sixjhKvQk9ERGRLDh+E4uPj0bx5c4wdO9Zsef/+/fHkk0+id+/eGDRoENauXYvOnTvj008/rXFdsbGxyM/PN02ZmTYco2OoDEJVP4KzCuNuv7ZSDlBuJ4O7iYiInJBdjBGqLyEEvv76a0ycOBEqlarWtgqFAn379q21R0itVkOtVlu7zOpV7BqrrkfoiuSJAtEE3tINIO8s4N+tcWoiIiJyMQ7dI7Rnzx6kp6dj+vTpd2wrhEBKSgoCAwMbobI6MNS8awyShDMiyHg/91QjFkVERORa7KJHqKioCOnp6ab5c+fOISUlBT4+Pmjbti1iY2ORlZWFlStXmj1v+fLliIyMRI8ePaqsc968eejfvz86deqEgoICfPLJJ0hJScGSJUtsvj11UtPh8xXSDUEIU6QDuTX3YBEREVHD2EUQOnToEIYMGWKanzt3LgBg8uTJiI+Ph1arRUZGhtlz8vPzsX79eixatKjadV6/fh1PP/00srOzodFoEBYWhqSkJPTr1892G1JXBgMAAQDQS9X0CAFIF62Nd66wR4iIiMhWJCGEkLsIe1VQUACNRoP8/Hx4e3tbb8W6MmB+KwBAuNfjKJSqjksanOeDr1QfAQE9gZn7rPfaRERETs6S32+HHiPksCoOnQeqP2oMANJNY4TSTZfjICIiIutiEJJDxfggANBVN1gaQKbwQ6lwA3Q3gXxeaoOIiMgWGITkcEsQqqlHSA8lzouKy4NwwDQREZFNMAjJwXDrrrHqe4QA8BB6IiIiG2MQksOt49NrOGoMuHWc0GkbF0REROSaGITs2BlDRRC6wiBERERkCwxCdsx0LiH2CBEREdkEg5AdOysqLgdyIxe4kSdvMURERE6IQciO3YQHoAk2zrBXiIiIyOoYhOydbyfjLS+1QUREZHUMQvbON9R4yx4hIiIiq2MQsneVPUIMQkRERFbHICQLC65z26qiR4i7xoiIiKyOQUhGdbqUqm9n4+31DKD8pi3LISIicjkMQvbOqxXg0RyAAK6my10NERGRU2EQsneS9EevEHePERERWRWDkCNoVRGEeBV6IiIiq2IQcgSmQ+jZI0RERGRNDEKOwHTkGA+hJyIisiYGIUdQeS6hq+mAQS9vLURERE6EQcgRNA8BlGpAXwpcvyB3NURERE7DTe4CXJKo+wkV2738PQBgm8ofXRUZmPbhf/CToY9Zm/Pvj7JqeURERK6CPUIyEpDq3DZdBAEAOkpZtiqHiIjI5TAIOYh0Q2sAQEfpksyVEBEROQ8GIQdxpqJHqIOCQYiIiMhaGIQcRLqo7BHKgkUXbSUiIqIacbC0nVL5JprNXxQ66IslaKQbCPLZgkt5D8lUGRERkfNgj5CDKJPccFFqCgDoYMiXuRoiIiLnwCDkQM4omgMAOojrstZBRETkLBiEHMhZhQYAcBd7hIiIiKyCQUgW9RvsfKYiCHHXGBERkXUwCMnI0jhk2jVmuG7tUoiIiFwSg5ADqewRChA30BQ3ZK6GiIjI8TEIOZBCSY0cyRMA0IFnmCYiImowBiEHUzlgmkGIiIio4RiEHMwZqTkAoCMvtUFERNRgdhGEkpKSMGbMGAQFBUGSJGzatKnW9rt374YkSVWm33//3azd+vXr0a1bN6jVanTr1g0bN2604VY0jsoeIV6FnoiIqOHsIggVFxejd+/eWLx4sUXPO3XqFLRarWnq1KmT6bHk5GSMHz8eEydOxNGjRzFx4kSMGzcOP//8s7XLb1SmI8e4a4yIiKjB7OJaYzExMYiJibH4eX5+fmjevHm1j8XFxWH48OGIjY0FAMTGxmLPnj2Ii4tDQkJCQ8qVVeWRYyHSZbhDh3L7+AiJiIgckl30CNVXWFgYAgMDMWzYMOzatcvsseTkZERHR5ste+CBB7B///4a11daWoqCggKzySZE/a8ef1lqgiK4w00yIETKtmJRRERErschg1BgYCC++OILrF+/Hhs2bEBoaCiGDRuGpKQkU5vs7Gz4+/ubPc/f3x/Z2TWHhwULFkCj0Zim4OBgm20DUM/zS0vSLeOEuHuMiIioIRxyv0poaChCQ0NN81FRUcjMzMSHH36IwYMHm5ZLkmT2PCFElWW3io2Nxdy5c03zBQUFNg9D9XFGoUEvQy4HTBMRETWQQ/YIVad///5IS0szzQcEBFTp/cnJyanSS3QrtVoNb29vs8keVQ6Y7qhgECIiImoIpwlCR44cQWBgoGk+KioKiYmJZm127NiBAQMGNHZpVneGJ1UkIiKyCrvYNVZUVIT09HTT/Llz55CSkgIfHx+0bdsWsbGxyMrKwsqVKwEYjwhr164dunfvjrKyMqxatQrr16/H+vXrTeuYPXs2Bg8ejIULF+Khhx7C5s2bsXPnTuzbt6/Rt8/azpoOoddCgkHeYoiIiByYXQShQ4cOYciQIab5ynE6kydPRnx8PLRaLTIyMkyPl5WV4cUXX0RWVhY8PT3RvXt3fP/99xg5cqSpzYABA7B69Wq89tpreP3119GhQwesWbMGkZGRjbdhNpIhNUOZUKKJVIogXJW7HCIiIoclCdGAY7mdXEFBATQaDfLz8607XqhAC3zcBeWQ0L3plHqt4r8FO9BZkYXJZS/hX++9Yr3aiIiIHJwlv99OM0bI1aSL1gB4qQ0iIqKGYBCSRcM74dJFEAAOmCYiImoIBiEZCdR8TqM7OWOoCEK8Cj0REVG9MQg5KO4aIyIiajgGIQd1VhjPmdRSKgSKeeQYERFRfTAIOaib8MBF4WucyT0lbzFEREQOikHIgaUZjLvHcOV3eQshIiJyUAxCDuyUqLggbE6qvIUQERE5KAYhB5ZmaGO8wyBERERULwxCDuy0YBAiIiJqCAYhOVjpqibpIggGIQE3coGiK1ZZJxERkSthEHJgN+GBTNHKOHOFvUJERESWYhBycKdNA6Z55BgREZGlGIQc3GlReQg9e4SIiIgsxSDk4E4ZeAg9ERFRfTEIObi0W48cs9IgbCIiIlfBIOTgzopAQFICJdeBwmy5yyEiInIoDEIOrhQqwOcu4wzHCREREVmEQcgZ+HUx3nKcEBERkUUYhJyBXzfjLYMQERGRRRiEZGHlQc2t2CNERERUH25yF+DKBKR6P1flm2i6n5CnwWMAyi4fx1dHlgCShFl3z7JChURERM6NPUJOIL+pL/SSEipdKZrezJe7HCIiIofBIOQEDAolrjfzBQD4FPAQeiIiorpiEHISec38AQA+hTkyV0JEROQ4GIScRJ53RRBijxAREVGdMQg5CfYIERERWY5ByEnkefsBAFoU5gDCIHM1REREjoFByEkUeLWETuEGd305vIvz5C6HiIjIITAIycEGV4kXksI0TsiX44SIiIjqhEFIRtaOQ1e9AwAALfMZhIiIiOqCQciJXNUEAgBaFmhlroSIiMgxMAg5kVz2CBEREVmE1xpzAnE7TwMAmosSjAWguZGH7i9/i2J4mtqcf3+UPMURERHZMfYIOZHrkgeypSYAgFApU+ZqiIiI7B+DkJM5pWgBAOiqyJC5EiIiIvtnF0EoKSkJY8aMQVBQECRJwqZNm2ptv2HDBgwfPhytWrWCt7c3oqKisH37drM28fHxkCSpylRSUmLDLZHfKYUPAKCrdEHmSoiIiOyfXQSh4uJi9O7dG4sXL65T+6SkJAwfPhxbt27F4cOHMWTIEIwZMwZHjhwxa+ft7Q2tVms2eXh42GIT7EZqRRDqouCuMSIiojuxi8HSMTExiImJqXP7uLg4s/n33nsPmzdvxnfffYewsDDTckmSEBAQUOf1lpaWorS01DRfUFBQ5+daxvonVKxUuWssVMqEBAOEfWRdIiIiu+QUv5IGgwGFhYXw8fExW15UVISQkBC0adMGo0ePrtJjdLsFCxZAo9GYpuDgYFuWbZM4dF6hQRkUaCbdRBvpig1egYiIyHk4RRD66KOPUFxcjHHjxpmWdenSBfHx8diyZQsSEhLg4eGBgQMHIi0trcb1xMbGIj8/3zRlZjre7iWdpECaojkAoKvEAdNERES1sYtdYw2RkJCAt956C5s3b4afn59pef/+/dG/f3/T/MCBA9GnTx98+umn+OSTT6pdl1qthlqttnnNtnZK4YPuhjx0kTKxA33lLoeIiMhuOXSP0Jo1azB9+nSsXbsW999/f61tFQoF+vbtW2uPkLP44xB6HjlGRERUG4cNQgkJCZgyZQq++eYbjBp157MmCyGQkpKCwMDARqhOXr9XHjnGXWNERES1sotdY0VFRUhPTzfNnzt3DikpKfDx8UHbtm0RGxuLrKwsrFy5EoAxBE2aNAmLFi1C//79kZ1tvLaWp6cnNBoNAGDevHno378/OnXqhIKCAnzyySdISUnBkiVLGn8DG9nvSmMQCpFy0AQluAHnPmUAERFRfdlFj9ChQ4cQFhZmOvR97ty5CAsLwxtvvAEA0Gq1yMj4o3dj2bJl0Ol0eOaZZxAYGGiaZs+ebWpz/fp1PP300+jatSuio6ORlZWFpKQk9OvXr3E3TgbXJA/kiOZQSIKX2iAiIqqFJISw3UltHFxBQQE0Gg3y8/Ph7e1tvRVfzwDieuImlOjddJL11nuLL/MP417lMcSWT0eCfhgvukpERC7Dkt9vu+gRcjmNkD1TRVsAPISeiIioNgxCMhKQbLbuk4YQAEB3xXmbvQYREZGjYxByUidEOwDGHiEFDPIWQ0REZKcYhJzUORGIG0KNJlIp2ktaucshIiKySwxCTsoABU6Kit1j0nl5iyEiIrJTDEJO7ETFOKEeHCdERERULQYhJ/abaA+APUJEREQ1sYszS5P1qXwTcVp/FbgJ9FCmYemRJYBkPEpt1t2zZK6OiIjIPrBHyImlK5qjDApoUIZmN67JXQ4REZHdYRCSReOczLtcUuJ0xZXoW+VfapTXJCIiciQMQjJqjDiUWnElet/rDEJERES3YxBycieULQGwR4iIiKg6DEJO7qTCGITYI0RERFQVg5CTO6VoAT0keJUWoklJgdzlEBER2RUGISd3U3LHOckbAHuFiIiIbtegIFReXo7MzEycOnUKeXl51qqJrIzjhIiIiKpncRAqKirCsmXLcN9990Gj0aBdu3bo1q0bWrVqhZCQEDz11FM4ePCgLWqleuI4ISIioupZFIT++c9/ol27dvjyyy8xdOhQbNiwASkpKTh16hSSk5Px5ptvQqfTYfjw4RgxYgTS0tJsVTdZoDIIsUeIiIjInEWX2Ni/fz927dqFnj17Vvt4v379MG3aNHz++edYvnw59uzZg06dOlmlUKciGueEipVOKo3nEvK+cQ3qsuJGfW0iIiJ7ZlEQWrduXZ3aqdVqzJrF61ndSWPFoUJJjeteLdG8+Cr8rmU10qsSERHZv3oPli4sLLRmHWRjOS3aAAD8rmXKXAkREZH9qHcQGjRoELKzs61ZC9lQTvOKIHSdPUJERESV6h2EIiIiEBkZid9//91s+ZEjRzBy5MgGF0bW9UeP0MVGH6NERERkr+odhL766itMmzYN99xzD/bt24fTp09j3LhxiIiIgFqttmaNZAW5miAYJAW8SguBAh49RkREBFg4WPp2b775JlQqFYYPHw69Xo8HHngABw8eRJ8+faxVH1mJzk2FvGb+8C3QApd+BTSt5S6JiIhIdvXuEdJqtXj++efxzjvvoFu3bnB3d8eECRMYguxY5e4xZP0qbyFERER2ot5B6K677sLevXuxbt06HD58GBs2bMCsWbOwcOFCa9ZHVvRHEDosbyFERER2ot67xlasWIEJEyaY5h944AHs2rULo0ePxoULF7B06VKrFOic5BmsXHnkGC6lAAYDoOA1d4mIyLXV+5fw1hBUqU+fPti/fz92797dkJpciNSor5bn7Q+dwg0ozQfyzjbqaxMREdkji4JQRkbGHdu0a9cO//vf/wAAWVk8Z409MSiUyG0eZJy5xHFCREREFgWhvn374qmnnsIvv/xSY5v8/Hx8++236NGjBzZs2NDgAsm6TLvHOGCaiIjIsjFCqampWLBgAUaMGAF3d3dEREQgKCgIHh4euHbtGk6ePIkTJ04gIiICH3zwAWJiYmxVN9UTB0wTERH9waIeoYULF+Kdd97BpUuX8Pnnn6Nz587Izc1FWloaAOCJJ57A4cOH8b///Y8hyE6ZeoSyjwH6cnmLISIikplFPUL//Oc/8de//hV+fn7YtGkTli5dCi8vL1vVRjZwvWlLQK0xDpjOSQUCe8ldEhERkWws6hFq3bo1fv3VOLZk1apVuHHjhk2KIhuSFEDrMOP9rEPy1kJERCQzi4LQiy++iAcffBADBgwAYAxDv/zyC27evNmgIpKSkjBmzBgEBQVBkiRs2rTpjs/Zs2cPwsPD4eHhgbvuuguff/55lTbr169Ht27doFar0a1bN2zcuLFBdTqNNn2Nt5kH5a2DiIhIZhYFoWeeeQZHjhzB6NGjIYTAkiVLMGDAAHh7e6Nr166YMGEC3n//fWzbts2iIoqLi9G7d28sXry4Tu3PnTuHkSNHYtCgQThy5AheeeUVPP/881i/fr2pTXJyMsaPH4+JEyfi6NGjmDhxIsaNG4eff/7ZotpsQu6rvwdHGm8z7eC9ICIikpEkRP1+lTt27IgDBw7Ay8sLx44dQ0pKimn67bffUFhYWL+CJAkbN27E2LFja2zz0ksvYcuWLUhNTTUtmzlzJo4ePYrk5GQAwPjx41FQUGAWykaMGIEWLVogISGhTrUUFBRAo9EgPz8f3t7e9dqeal09A3zaB4VwR3jTJ6233lrMub+z6f6s0MeAhe2MM387C3i1bJQaiIiIGoMlv9/1vsRGenq66X5kZCQiIyNN8/XMVnWWnJyM6Ohos2UPPPAAli9fjvLycri7uyM5ORkvvPBClTZxcXE1rre0tBSlpaWm+YKCAqvWLae4nadN9/+xej92qoLQUXEJ095dip8Mxgvlnn9/lFzlERERycImF5uSJNteOiI7Oxv+/v5my/z9/aHT6ZCbm1trm+zs7BrXu2DBAmg0GtMUHBxs/eLtxK+GTgCAPoo0mSshIiKSj8NedfP2sFXZC3Xr8ura1BbSYmNjkZ+fb5oyMzOtWLF9+VVUBCGJQYiIiFxXvXeNySkgIKBKz05OTg7c3NzQsmXLWtvc3kt0K7VaDbVabf2C7VBlj1BvxRkooYceSpkrIiIianwO2SMUFRWFxMREs2U7duxAREQE3N3da21Teei/q0sTrVEgPOEllSJUct6eLyIiotpYHITOnj1r9cHQRUVFpiPOAOPh8SkpKaar3cfGxmLSpEmm9jNnzsSFCxcwd+5cpKam4uuvv8by5cvx4osvmtrMnj0bO3bswMKFC/H7779j4cKF2LlzJ+bMmWPV2h2VgAIpho4AOE6IiIhcl8VBqFOnTrhy5Yppfvz48bh8+XKDijh06BDCwsIQFmY84/HcuXMRFhaGN954AwCg1WpNoQgA2rdvj61bt2L37t24++678c477+CTTz7BI488YmozYMAArF69GitWrECvXr0QHx+PNWvWmB3d5uqOVIwTCmMQIiIiF2XxeYQUCgWys7Ph5+cHAGjWrBmOHj2Ku+66yyYFysmZziNUnXt0Wfi6ZAfOS80Q7fVn07mGZt09S7aaiIiIGsqS32+HHCPkLARse5qBOzmq9AUAtBOFaCFKZK2FiIhIDhYHIUmSqhyCbuvzBpFtFEpqpCmaAwDC9DnyFkNERCQDiw+fF0JgypQppsPMS0pKMHPmTHh5eZm127Bhg3UqJJtKUbRCJ8N19NHnQCd3MURERI3M4iA0efJks/knn5RvjAs13CGlPx7VpSFcfxm8BCsREbkai4PQihUrbFEHyeSQ0niCyZ6GXBzSl0OvdJe5IiIiosbDwdIuLlNqhsuSJ1QwwP8aT6xIRESupV5ByGAw4Ouvv8bo0aPRo0cP9OzZEw8++CBWrlxp8yvPk5VJEg4pAwAAgVfPy1sLERFRI7M4CAkh8OCDD2LGjBnIyspCz5490b17d1y4cAFTpkzBww8/bIs6yYYOKYy7x4Jyz8lcCRERUeOyeIxQfHw8kpKS8OOPP2LIkCFmj/30008YO3YsVq5caXZJDLqNnfWaVY4TCsjLgGTQy1wNERFR47G4RyghIQGvvPJKlRAEAEOHDsXLL7+M//znP1YpztnZSxw6rWiBfKjgri9Dq/xLcpdDRETUaCwOQseOHcOIESNqfDwmJgZHjx5tUFHUuIQk4XBFrxDHCRERkSuxOAjl5eXB39+/xsf9/f1x7dq1BhVFje8QgxAREbkgi4OQXq+Hm1vNQ4uUSiV0Op6j2NEcvDUIGQzyFkNERNRIGnyJjduVlpY2uChqfCcVLVGudIdn2Q0g9zTg10XukoiIiGzO4iA0adKkO15klUeMOZ5ySYnLLYLRJvcscOF/DEJEROQS6nX4PDknbcv2FUFoP9B3utzlEBER2ZzFY4Ru3ryJZ555Bq1bt4afnx8ef/xx5Obm2qI2amSXfNsb71z4n92d64iIiMgWLA5Cb7zxBuLj4zFq1ChMmDABiYmJ+Mtf/mKL2pyYfYaMbJ+20CncgEItkJsmdzlEREQ2Z/GusQ0bNmD58uWYMGECAODJJ5/EwIEDodfroVQqrV6gM7O3OKRXuiPbp61x99i5PUCrznKXREREZFMW9whlZmZi0KBBpvl+/frBzc0Nly7xjMTOIKtVB+Odc0nyFkJERNQI6nUeIZVKZbbMzc2N5w5yEhcrg9D5vTyfEBEROT2rnEeopKQEM2fOhJeXl2nZhg0brFMhNaorzdsAqqbAzWvA5d+AwF5yl0RERGQzFgehyZMnV1n25JNPWqUYkp9BoQRCBgBpO4y7xxiEiIjIiVkchFasWGGLOsietB/8RxAa8Kzc1RAREdmMxUGInFfcztMAgO+vdsL3aqDo9B7c/fJm6G75mpx/f5Rc5REREVmdxYOlyfmdFG1xXXihqVSCntI5ucshIiKyGQYhOdj5WZsFFEg2dAMARClOyFwNERGR7TAIyUig9ovXymm/oTsAYACDEBEROTEGIapWZRDqqzgNNcpkroaIiMg2GISoWmdEEC4JH6ilckQqUuUuh4iIyCYYhKgGEpL0xnMIDVYck7kWIiIi22AQoholGRiEiIjIuTEIURUq30SofBPxS4tc6CGhsyILbX02QuWbiKUpS+Uuj4iIyGoYhKhGBZIaRxW+AIBB+ksyV0NERGR9DEJUq31urQEA9+iyZK6EiIjI+hiEZGHfJ1S81V6lMQgN0F+CUhhkroaIiMi67CYILV26FO3bt4eHhwfCw8Oxd+/eGttOmTIFkiRVmbp3725qEx8fX22bkpKSxtgcp3Fc4YvrUEGDMvQ05MpdDhERkVXZRRBas2YN5syZg1dffRVHjhzBoEGDEBMTg4yMjGrbL1q0CFqt1jRlZmbCx8cHjz76qFk7b29vs3ZarRYeHh6NsUlOwyApsN8tCAAwiLvHiIjIydhFEPr4448xffp0zJgxA127dkVcXByCg4Px2WefVdteo9EgICDANB06dAjXrl3D1KlTzdpJkmTWLiAgoDE2x+lU7h4bpGcQIiIi5yJ7ECorK8Phw4cRHR1ttjw6Ohr79++v0zqWL1+O+++/HyEhIWbLi4qKEBISgjZt2mD06NE4cuRIrespLS1FQUGB2UTAvoog1NOQC3VZsczVEBERWY/sQSg3Nxd6vR7+/v5my/39/ZGdnX3H52u1Wmzbtg0zZswwW96lSxfEx8djy5YtSEhIgIeHBwYOHIi0tLQa17VgwQJoNBrTFBwcXL+NcjKXFV74XdECSgi0vXxa7nKIiIisRvYgVEmSzK/ELoSosqw68fHxaN68OcaOHWu2vH///njyySfRu3dvDBo0CGvXrkXnzp3x6aef1riu2NhY5Ofnm6bMzMx6bYsz2qU0hsJ22b/LXAkREZH1yB6EfH19oVQqq/T+5OTkVOklup0QAl9//TUmTpwIlUpVa1uFQoG+ffvW2iOkVqvh7e1tNpHRLjdjEGp7+TSgL5e5GiIiIuuQPQipVCqEh4cjMTHRbHliYiIGDBhQ63P37NmD9PR0TJ8+/Y6vI4RASkoKAgMDG1Svqzqm8MVVyQNqXQmQkSx3OURERFYhexACgLlz5+Krr77C119/jdTUVLzwwgvIyMjAzJkzARh3WU2aNKnK85YvX47IyEj06NGjymPz5s3D9u3bcfbsWaSkpGD69OlISUkxrVNWwnFOqFjJICmwW9nGOHPqB3mLISIishI3uQsAgPHjx+Pq1at4++23odVq0aNHD2zdutV0FJhWq61yTqH8/HysX78eixYtqnad169fx9NPP43s7GxoNBqEhYUhKSkJ/fr1s/n21JWjxaFdbsF4RJcOnN4GPPAuUIcxXERERPZMEsIBuycaSUFBATQaDfLz8607Xijnd2BpJPKgRv+mj1tvvTbmJcpx6EYClEIPPHsI8O0kd0lERERVWPL7bRe7xsgxFEvuuOTb3jhzapu8xRAREVkBgxBZ5HxAV+Od0xwnREREjo9BiCxyPqCL8U7GAeBGnrzFEBERNRCDEFmk0MsHaNUVEHogbYfc5RARETUIgxBZrusY423qd/LWQURE1EAMQmS5yiCUvhMoLZK3FiIiogZgEJKFg5+xIKAn0KIdoCsxhiEiIiIHxSAkI+GoJySUpFt2j22RtxYiIqIGYBCi+un6kPH29HagvETeWoiIiOrJLi6xQY4jbudp/GP195BgwH61DwLL8jDtzQ/wk6GPqc3590fJWCEREVHdsUeILKbyTYS774/YqfIHAIxqsgkq30SofBNlroyIiMgyDEJUb9uVxoviDtVlwk0YZK6GiIjIcgxCVG+Hlf7IgxotUIp++my5yyEiIrIYgxDVm15SINHN2Cs0UndO5mqIiIgsxyBEDfK9m/Fq9NG683AXepmrISIisgyDkByEg59Q8Ra/KANwWfJEc5RhkD5L7nKIiIgswiAkI2eIQwZJga0VvUKjdWdlroaIiMgyDELUYN+73QXAePSYJ3hyRSIichwMQtRgxxS+uCA1QxPoMFzxq9zlEBER1RmDEDWcJJkGTY9R7pe5GCIiorpjECKr+G/F7rF7FUeBG3kyV0NERFQ3DEJkFenKFvhd0QIqSc8r0hMRkcNgECKrqewVwtE18hZCRERURwxCZDWb3TpALyQgYz9w9Yzc5RAREd0Rg5AsnOEMQlVdVnhhn6GnceboanmLISIiqgMGIRkJSHKXYHXf6gcb7xxNAAy8Ij0REdk3BiGyqh2GCECtAfIzgfNJcpdDRERUKwYhsqpSqICejxhnUr6RtxgiIqI7YBAi67v7CePtyS1ASYG8tRAREdWCQYisr3U44NsZ0N0ETm6SuxoiIqIaMQiR9UkScPfjxvu/rpS3FiIiolowCJFt9H4cULgBFw8C2b/JXQ0REVG1GITINpr5A11GG+8fXiFvLURERDVgEJKDcM4TKlYRMc14e3QNUFokby1ERETVcJO7AFfmjHFI5ZuIpSkXjDNC4LGmvmhRlItd255Fart+mHX3LHkLJCIiugV7hMh2JAknQ/oBAHqc+9l1esKIiMhh2E0QWrp0Kdq3bw8PDw+Eh4dj7969NbbdvXs3JEmqMv3+++9m7davX49u3bpBrVajW7du2Lhxo603g25zqm0f6BRuaJV/CX7XL8pdDhERkRm7CEJr1qzBnDlz8Oqrr+LIkSMYNGgQYmJikJGRUevzTp06Ba1Wa5o6depkeiw5ORnjx4/HxIkTcfToUUycOBHjxo3Dzz//bOvNoVuUqL1wJqgHAKD7uV9kroaIiMicXQShjz/+GNOnT8eMGTPQtWtXxMXFITg4GJ999lmtz/Pz80NAQIBpUiqVpsfi4uIwfPhwxMbGokuXLoiNjcWwYcMQFxdX4/pKS0tRUFBgNlHDnWgfCQDodDEFuJEnbzFERES3kD0IlZWV4fDhw4iOjjZbHh0djf3799f63LCwMAQGBmLYsGHYtWuX2WPJyclV1vnAAw/Uus4FCxZAo9GYpuDgYAu3hqqT7ROCHE0Q3Aw6HkpPRER2RfYglJubC71eD39/f7Pl/v7+yM7OrvY5gYGB+OKLL7B+/Xps2LABoaGhGDZsGJKS/rjaeXZ2tkXrBIDY2Fjk5+ebpszMzAZsGZlIEo51GGi8/8uXgL5c3nqIiIgq2M3h85Ikmc0LIaosqxQaGorQ0FDTfFRUFDIzM/Hhhx9i8ODB9VonAKjVaqjV6vqUT7eI23m6yjJ34Yldkif8CrV4/vU38cl778lQGRERkTnZe4R8fX2hVCqr9NTk5ORU6dGpTf/+/ZGWlmaaDwgIaPA6bcf1DiMvl5T4j3sXAMB0t208lJ6IiOyC7EFIpVIhPDwciYmJZssTExMxYMCAOq/nyJEjCAwMNM1HRUVVWeeOHTssWqetuVoUWO3eBaXCHb0VZ4FMHkFGRETys4tdY3PnzsXEiRMRERGBqKgofPHFF8jIyMDMmTMBGMfuZGVlYeVK45XM4+Li0K5dO3Tv3h1lZWVYtWoV1q9fj/Xr15vWOXv2bAwePBgLFy7EQw89hM2bN2Pnzp3Yt2+fLNtIwDXJAxv1AzHBbTdwYCnQNlLukoiIyMXZRRAaP348rl69irfffhtarRY9evTA1q1bERISAgDQarVm5xQqKyvDiy++iKysLHh6eqJ79+74/vvvMXLkSFObAQMGYPXq1Xjttdfw+uuvo0OHDlizZg0iI/njK6cV+hHGIJS6Bcg7B/i0l7skIiJyYZIQHKxRk4KCAmg0GuTn58Pb29t6K84+Dnx+Dy5LnhjkNcF663UAZbnDEe++EPcpjxovyjr6n3KXRERETsaS32/ZxwiR61mqe9B458gqoLDm0xkQERHZml3sGiPXofJNRIoQ0KpDEJh3AUc2P4XkHjGmx3l1eiIiakzsEaLGJ0n4tfN9AIDu5w9AXXZT3nqIiMhlMQiRLC74hyLXOwAqXRl6nK39UipERES2wiAkB45Pr+gVuhcA0OvsfrjpymQuiIiIXBGDkKxqvtyHKzgT1BP5Xj7wLLuBHucOyF0OERG5IAYhko1QKHEodCgAICxtD9zLS2WuiIiIXA2DEMnqdJu7ca1pK3iW3UCvs/+TuxwiInIxDEIkK6FQ4mCXYQCAu9P2AjevyVwRERG5EgYhkl1665646u0Pta4ESF4idzlERORCGIRIfpICv3QZbrx/4DOg+Kq89RARkctgECK7cC6wG3I0QUBZEbD3Q7nLISIiF8EgRPZBknCg+wjj/V++BK6ekbceIiJyCbzWmCx4QsW4naerXd5c2RqD9VnYtvRPODfm/8we43XIiIjI2tgjJCPGoaoWqvpCDwkx+vMIuHpe7nKIiMjJMQiRXUlTtsB6t04AgAG/beXlSIiIyKYYhMjuLFKFoRhuCLiWiY5Zx+Uuh4iInBiDENmdK4om+ErVEwAQdWIbL8hKREQ2wyBEdmm5ew8UeDZHs5vXEX56l9zlEBGRk2IQIrtUIrlhX68xAIyX3mheeEXmioiIyBkxCJHdOh/QFRf8Q6EUegw6toUDp4mIyOoYhMh+SRL29hoDncINwVfSgZOb5a6IiIicDE+oKAf2bNRZgVdLHOl0L/qe+hFF3z2H1TfOoszdo9q2POEiERFZij1CMmIcqptfO9+L614t0bSkAFEntsldDhEROREGIbJ7eqU7dof9CQDQ/fwvaH2F1yEjIiLrYBAih3DJ9y781j4SAHDfkfU8txAREVkFxwiR3br9wqxfik74r/QbWt+4Bvfta/ChOhJz7u8sU3VEROQM2CNEDqNYcsfr6oEAgMnlJxGhz5a5IiIicnQMQuRQ9rm1xjq3TlAA+KAkCaqym3KXREREDoxBiBzOe+pIXJCaobUoxr1HN/F0BEREVG8MQuRwiiV3vOgxGDpI6JR1DJ0vpshdEhEROSgGIVmwB6Ohjir9sFh1NwBg8NHNaFacJ29BRETkkBiEZCQgyV2CQ1vm3gtanxCodKV44OA3gK5U7pKIiMjBMAiRw9JLCiRGjEeJuyf8rmcBP8TKXRIRETkYBiFyaEVNWmBnxHhj79qh5cDR1XKXREREDsRugtDSpUvRvn17eHh4IDw8HHv37q2x7YYNGzB8+HC0atUK3t7eiIqKwvbt283axMfHQ5KkKlNJSYmtN4UaWYZ/KA6FDjHOfDcHuHxC1nqIiMhx2EUQWrNmDebMmYNXX30VR44cwaBBgxATE4OMjIxq2yclJWH48OHYunUrDh8+jCFDhmDMmDE4cuSIWTtvb29otVqzycOj+iuXk2M71GUY0GEooLsJrHkSuMHB00REdGd2EYQ+/vhjTJ8+HTNmzEDXrl0RFxeH4OBgfPbZZ9W2j4uLw9///nf07dsXnTp1wnvvvYdOnTrhu+++M2snSRICAgLMJnJOQlIAf/oK0LQF8s4CaycBvB4ZERHdgexBqKysDIcPH0Z0dLTZ8ujoaOzfv79O6zAYDCgsLISPj4/Z8qKiIoSEhKBNmzYYPXp0lR6j25WWlqKgoMBsIgfi1RJ4fDWgagqc3wts/StPtkhERLWSPQjl5uZCr9fD39/fbLm/vz+ys+t2LamPPvoIxcXFGDdunGlZly5dEB8fjy1btiAhIQEeHh4YOHAg0tLSalzPggULoNFoTFNwcHD9Nork498d+PPXgKQAfl0JJC+RuyIiIrJjdnP1eUkyP6eOEKLKsuokJCTgrbfewubNm+Hn52da3r9/f/Tv3980P3DgQPTp0weffvopPvnkk2rXFRsbi7lz55rmCwoKbBOG2EthNbdeoT5u5xzT/SnuEXil7BcYdryKHddP4mxQD8y6e5YMFRIRkT2TvUfI19cXSqWySu9PTk5OlV6i261ZswbTp0/H2rVrcf/999faVqFQoG/fvrX2CKnVanh7e5tNtsQ4ZDvx7t2Q4BYKBYDhh1Yj6MoZuUsiIiI7JHuPkEqlQnh4OBITE/Hwww+blicmJuKhhx6q8XkJCQmYNm0aEhISMGrUqDu+jhACKSkp6Nmzp1XqJjsnSXhb3R++4iaG6zNw///+hVE/tccJ0b7a5uffv/N3iIiInI/sPUIAMHfuXHz11Vf4+uuvkZqaihdeeAEZGRmYOXMmAOMuq0mTJpnaJyQkYNKkSfjoo4/Qv39/ZGdnIzs7G/n5+aY28+bNw/bt23H27FmkpKRg+vTpSElJMa2TnJ9eUuAFj3txQBmApijHv1QL0U7Syl0WERHZEbsIQuPHj0dcXBzefvtt3H333UhKSsLWrVsREhICANBqtWbnFFq2bBl0Oh2eeeYZBAYGmqbZs2eb2ly/fh1PP/00unbtiujoaGRlZSEpKQn9+vVr9O0j+ZRJbviLxzCcUPjAVyrAf1TvIVi6LHdZRERkJyQhOHK3JgUFBdBoNMjPz7fueKGsX4EvhyBL8sIQr3F3bk8N5mO4if8U7UEHhRZZoiUmlL2GTPHHGDTuGiMich6W/H7bRY8Qka3lKTwxoew1nDEEorV0FatV89kzREREDELkOvJ9D2FS08E4I2nQWrqKNR6voZPPt1D5JspdGhERyYRBiFzKFUUTTPIcgTOSBkGiGKtvbkU3fa7cZRERkUwYhGTBYVlyuqJogic9Y3BC4YOWogSrbm4Dzu6WuywiIpIBg5CMBO585myyjasKTzzpGYNkZSCaQgf851Hgtw1yl0VERI2MQYhcVrGkwgyP4dimbAfoy4BvpwJJH/ISKERELoRBiFxauaTECx73ApEVJ9r86R1g/Qyg/Ka8hRERUaNgECKXZ5AUQMxCYHQcoHADfvsWiB8FFPAs1EREzk72a40R2YPOH84BAESq7scnJbvQIuswrvwzDH9VD8YBtyCU5Q7nSReJiJwQe4SIbvGzWyAebTIapxTN0UrcRHzJdjxTlgIFDHKXRkRENsAgRHSbDIU3HvUcg3VunaAAMLvsCP7l/j5QlCN3aUREZGUMQkTVKJHc8KrHPXhJfQ9uQolByt+Apf2Bk5vlLo2IiKyIQUgOPDrbYWx074RHPMcg1dAWuHEVWDsJWP8UcPOa3KUREZEVcLC0jJiHHEO6sgUeLJuP2W7r8RflFiiPr4X22E68Xj4VOw3hZm05oJqIyLGwR4ioDsrhhg914/Hnsrdw1hCAQCkPX6k+wjL3jxGIq3KXR0RE9cQgRFQHKt9EqHwTcaLleYxtNhxfuPdEOSQ8oDyEnR4vYLryeyihl7tMIiKyEIMQkYVKJDd8qI7AWM+HcFjhBy/o8Lr7f7Bd9RJw6gdeooOIyIEwCBHVU5qyBR73HIlX1QNxVTRDR8UlIGE88K8xwKUUucsjIqI6YBAiagAhSVjn3hnDmz6IL9x7QqdwA87vBb64F6e/GoyEvW/JXSIREdWCR40RWUGRpMKH6gh4DIhB/5M70PliCjpfPIpOF48BlzOAwX8H/LrIXSYREd2GQYjIiubvvwIgDF092+LZshQM12cAv62H4fgGbDVEYpluNL5b8JzcZRIRUQXuGpMFB9M6u1RlSzzjOQwPeT6IH/R9oZAERisP4Dv1a8DXMUDqd4CBR5kREcmNPUJENpSqbImZ5RPQVXcBM9y+x4OKZLhn7Acy9gMt2gF9nwJ6PwZ4tZS7VCIil8QgRNQIUkUI/lo+CwvxGCa57cCTyp1ofu08sONVlG5/EzsMEUjQD0WyoRsEFDxDNRFRI2EQIrIxlW+i6f51AJ/AB1+Kh/Gg7gzGlZ9GT8NVjFEewBjlAVyQmmGLWwd8s/cQrjdrBQCYdfcseQonInIBDEJEMrgpuWONexesce+CrvqrGFd+Gg/qziBEFOK58hTgxxRc0QQhrU1voN0YoHmw3CUTETklBiEimaUqW2KeMgr/EBEYrsvAaN1ZDDJcQqt844QT23C5RRucD+iG8wFdcNU7AJAkAOwtIiJqKAYhIjtxU3LHFvcO2OLeAS1ECaJ15zG6/Bz6GrLhf+0i/K9dRGTqDlyUmuInt2C0iOgPlN0AVE3kLp2IyGExCBHZoWuSh2nXWSvDDQzRZ2KoLhMD9JfQRhRhUnkqkJwK/PIfIDgSuOteoP19QFAYoOSfNRFRXfFfTCI7d0XRBGsVoVjrHgoPocMA/SUM02VghHsOmt3MN17S4/xeAPMBtTfQtj8Q3M8YkIL6AOqmcm8CEZHdYhCSA69OTvVUIrnhJ7e2+MmtLa4M6wRN8VW0uZKONlfOoPWVM/AoLQDSdhgnAJAUgH8PYyhqEwEE9AJ8O7PXiIioAv81lJGAJHcJ5MDifkyruOcDwAcKVTi6uuWhjz4HfQw5CNPnIEgUA9nHjNPBL43N3TwAv25AYG8gsBcQ0Nt4HTSVl1ybQkQkGwYhIidhkBQ4ofTFCaUv/o1uAIAAQxHC9FcQZshBT30uQg15aKorAS79apxupWkL+HYCWoUae41ahQK+oTzrNRE5NQYhIieWrWiKbYqm2Ib2AABJCISIAnTTX0VXQx66lEi411sLFF8B8jOM05kfzVfi2cJ4OZDKqXlIxf0QQBMMKN0beauIiKyHQYjIhQhJwnlJg/MKDbbiLpQVDsf5v40CbuQBV04BuaeAK6eB3FMoyDoE75vXgZvXjNOlI1XWpxcStGiJy6IFwnt0A5oFAd6Bt9wGAt5BgLtn428sEVEdMAgRuTCVbyI6f5hYzSPBgDIYnl7laGsoRLAoRBtDUcVtIYINhWgjiuAh6dEGuWgj5QIn06pZj1GBaIJc4Y08eCNPNMNV4Y2r8Eae8MZV0axiufGx5HkPA6qmppNGEhHZkt0EoaVLl+KDDz6AVqtF9+7dERcXh0GDBtXYfs+ePZg7dy5OnDiBoKAg/P3vf8fMmTPN2qxfvx6vv/46zpw5gw4dOuDdd9/Fww8/bOtNIXIaNyV3nFL64BR8qj4oBFqJmwgUxQgQxfA33IC/KIa/uAG/Ug/4S3kIkK6hiVQKb+kGvKUbuAvZd37RBc/BIClQ5qZGqcoTpe6eKHX3QFnFbbeg/oBHc8DD2xiYVF63TU0B9yZ/zCuUVn9fiMh52EUQWrNmDebMmYOlS5di4MCBWLZsGWJiYnDy5Em0bdu2Svtz585h5MiReOqpp7Bq1Sr873//w6xZs9CqVSs88sgjAIDk5GSMHz8e77zzDh5++GFs3LgR48aNw759+xAZGdnYm0jkfCQJV6QmuIImOIZW5o95VNwKAW+UwVfchI8oqTK1rLhtUXFfI0qhggEKYYBH+U14lN+s+roXDllWp5vHH6HI3cu4m87NA3BT/3Hr7mk+X+1txX2lClC4GcdGKdwrbm+dd/tj+e1tFUr2dBHZGUkI+U9qExkZiT59+uCzzz4zLevatSvGjh2LBQsWVGn/0ksvYcuWLUhNTTUtmzlzJo4ePYrk5GQAwPjx41FQUIBt27aZ2owYMQItWrRAQkJCneoqKCiARqNBfn4+vL2967t5VWUeBJbfjwypGe73+rP11kvk6ISAB/TwFmVohjJ4i1LjfVEGjWlZmWmZF8rhKXRognI0ETo0gQ6eBgEvlEApyf5PW/VM4akyNLkBktJ4zieFwnhfobxl2a23yj/mJaXl7SUY70OqCGQVt1WWKcwfB6ouu+NzKtvV9pzbl1W6LSzWFB5rek6d11WH59hsXXd6rA6v3xBWC+RWWE8TH6D94Iav5xaW/H7L3iNUVlaGw4cP4+WXXzZbHh0djf3791f7nOTkZERHR5ste+CBB7B8+XKUl5fD3d0dycnJeOGFF6q0iYuLq7GW0tJSlJaWmubz8/MBGN9QqyosAkoFCmGAXll65/ZELqQYQDGU0MITQC2DrKXbbispAQgBFQzwgg6eohweQocm0KOJKIcaeqihh0r8cau6bZkahj+Wm5YZH3eHgBsMcIMBSmGAO4yTGwxQwgA3CNO8otrCyyomIgIABIUDkzdbdZWVv9t16euRPQjl5uZCr9fD39/fbLm/vz+ys6sfT5CdnV1te51Oh9zcXAQGBtbYpqZ1AsCCBQswb968KsuDg4PrujkWKgTwuY3WTURE5Ah2A89rbLLmwsJCaDS1r1v2IFRJuq2bTghRZdmd2t++3NJ1xsbGYu7cuaZ5g8GAvLw8tGzZstbn1UdBQQGCg4ORmZlp3d1uxPfWxvj+2hbfX9vhe2tb9vT+CiFQWFiIoKCgO7aVPQj5+vpCqVRW6anJycmp0qNTKSAgoNr2bm5uaNmyZa1talonAKjVaqjVarNlzZs3r+um1Iu3t7fsXxhnxffWtvj+2hbfX9vhe2tb9vL+3qknqFL1u7AbkUqlQnh4OBITzc9lkpiYiAEDBlT7nKioqCrtd+zYgYiICLi7u9fapqZ1EhERkeuRvUcIAObOnYuJEyciIiICUVFR+OKLL5CRkWE6L1BsbCyysrKwcuVKAMYjxBYvXoy5c+fiqaeeQnJyMpYvX252NNjs2bMxePBgLFy4EA899BA2b96MnTt3Yt++fbJsIxEREdkfuwhC48ePx9WrV/H2229Dq9WiR48e2Lp1K0JCQgAAWq0WGRkZpvbt27fH1q1b8cILL2DJkiUICgrCJ598YjqHEAAMGDAAq1evxmuvvYbXX38dHTp0wJo1a+zmHEJqtRpvvvlmlV1x1HB8b22L769t8f21Hb63tuWo769dnEeIiIiISA6yjxEiIiIikguDEBEREbksBiEiIiJyWQxCRERE5LIYhGSwdOlStG/fHh4eHggPD8fevXvlLslpJCUlYcyYMQgKCoIkSdi0aZPcJTmNBQsWoG/fvmjWrBn8/PwwduxYnDp1Su6ynMJnn32GXr16mU5EFxUVZXbBaLKeBQsWQJIkzJkzR+5SnMJbb70FSZLMpoCAALnLsgiDUCNbs2YN5syZg1dffRVHjhzBoEGDEBMTY3Z6AKq/4uJi9O7dG4sXL5a7FKezZ88ePPPMMzhw4AASExOh0+kQHR2N4uJiuUtzeG3atMH777+PQ4cO4dChQxg6dCgeeughnDhxQu7SnMrBgwfxxRdfoFevXnKX4lS6d+8OrVZrmo4fPy53SRbh4fONLDIyEn369MFnn31mWta1a1eMHTsWCxYskLEy5yNJEjZu3IixY8fKXYpTunLlCvz8/LBnzx4MHjxY7nKcjo+PDz744ANMnz5d7lKcQlFREfr06YOlS5di/vz5uPvuuxEXFyd3WQ7vrbfewqZNm5CSkiJ3KfXGHqFGVFZWhsOHDyM6OtpseXR0NPbv3y9TVUT1k5+fD8D4g03Wo9frsXr1ahQXFyMqKkrucpzGM888g1GjRuH++++XuxSnk5aWhqCgILRv3x4TJkzA2bNn5S7JInZxZmlXkZubC71eX+XCr/7+/lUuEEtkz4QQmDt3Lu655x706NFD7nKcwvHjxxEVFYWSkhI0bdoUGzduRLdu3eQuyymsXr0av/76Kw4ePCh3KU4nMjISK1euROfOnXH58mXMnz8fAwYMwIkTJ0wXQbd3DEIykCTJbF4IUWUZkT179tlncezYMV67z4pCQ0ORkpKC69evY/369Zg8eTL27NnDMNRAmZmZmD17Nnbs2AEPDw+5y3E6MTExpvs9e/ZEVFQUOnTogH/961+YO3eujJXVHYNQI/L19YVSqazS+5OTk1Oll4jIXj333HPYsmULkpKS0KZNG7nLcRoqlQodO3YEAERERODgwYNYtGgRli1bJnNlju3w4cPIyclBeHi4aZler0dSUhIWL16M0tJSKJVKGSt0Ll5eXujZsyfS0tLkLqXOOEaoEalUKoSHhyMxMdFseWJiIgYMGCBTVUR1I4TAs88+iw0bNuCnn35C+/bt5S7JqQkhUFpaKncZDm/YsGE4fvw4UlJSTFNERASeeOIJpKSkMARZWWlpKVJTUxEYGCh3KXXGHqFGNnfuXEycOBERERGIiorCF198gYyMDMycOVPu0pxCUVER0tPTTfPnzp1DSkoKfHx80LZtWxkrc3zPPPMMvvnmG2zevBnNmjUz9WxqNBp4enrKXJ1je+WVVxATE4Pg4GAUFhZi9erV2L17N3744Qe5S3N4zZo1qzKOzcvLCy1btuT4Nit48cUXMWbMGLRt2xY5OTmYP38+CgoKMHnyZLlLqzMGoUY2fvx4XL16FW+//Ta0Wi169OiBrVu3IiQkRO7SnMKhQ4cwZMgQ03zlPurJkycjPj5epqqcQ+UpH+677z6z5StWrMCUKVMavyAncvnyZUycOBFarRYajQa9evXCDz/8gOHDh8tdGlGtLl68iMceewy5ublo1aoV+vfvjwMHDjjUbxrPI0REREQui2OEiIiIyGUxCBEREZHLYhAiIiIil8UgRERERC6LQYiIiIhcFoMQERERuSwGISIiInJZDEJERETUYElJSRgzZgyCgoIgSRI2bdpk09crLCzEnDlzEBISAk9PTwwYMAAHDx60eD0MQkRERNRgxcXF6N27NxYvXtworzdjxgwkJibi3//+N44fP47o6Gjcf//9yMrKsmg9PLM0ERERWZUkSdi4cSPGjh1rWlZWVobXXnsN//nPf3D9+nX06NEDCxcurHLZnrq4efMmmjVrhs2bN2PUqFGm5XfffTdGjx6N+fPn13ldvNYYERER2dzUqVNx/vx5rF69GkFBQdi4cSNGjBiB48ePo1OnThatS6fTQa/Xw8PDw2y5p6cn9u3bZ9G6uGuMiFxKQkICPDw8zLrPZ8yYgV69eiE/P1/Gyoic15kzZ5CQkIB169Zh0KBB6NChA1588UXcc889WLFihcXra9asGaKiovDOO+/g0qVL0Ov1WLVqFX7++WdotVqL1sUgREQuZcKECQgNDcWCBQsAAPPmzcP27duxbds2aDQamasjck6//vorhBDo3LkzmjZtapr27NmDM2fOAADOnz8PSZJqnZ599lnTOv/9739DCIHWrVtDrVbjk08+weOPPw6lUmlRbdw1RkQuRZIkvPvuu/jzn/+MoKAgLFq0CHv37kXr1q3lLo3IaRkMBiiVShw+fLhKUGnatCkAoHXr1khNTa11PS1atDDd79ChA/bs2YPi4mIUFBQgMDAQ48ePR/v27S2qjUGIiFzO6NGj0a1bN8ybNw87duxA9+7d5S6JyKmFhYVBr9cjJycHgwYNqraNu7s7unTpYvG6vby84OXlhWvXrmH79u34xz/+YdHzGYSIyOVs374dv//+O/R6Pfz9/eUuh8gpFBUVIT093TR/7tw5pKSkwMfHB507d8YTTzyBSZMm4aOPPkJYWBhyc3Px008/oWfPnhg5cqTFr7d9+3YIIRAaGor09HT87W9/Q2hoKKZOnWrRenj4PBG5lF9//RX33XcflixZgtWrV6NJkyZYt26d3GURObzdu3djyJAhVZZPnjwZ8fHxKC8vx/z587Fy5UpkZWWhZcuWiIqKwrx589CzZ0+LX2/t2rWIjY3FxYsX4ePjg0ceeQTvvvuuxWP9GISIyGWcP38eUVFReO655/DKK6/g8OHD6Nu3Lw4ePIjw8HC5yyMiGTAIEZFLyMvLw8CBAzF48GAsW7bMtPyhhx5CaWkpfvjhBxmrIyK5MAgRERGRy+J5hIiIiMhlMQgRERGRy2IQIiIiIpfFIEREREQui0GIiIiIXBaDEBEREbksBiEiIiJyWQxCRERE5LIYhIiIiMhlMQgRERGRy2IQIiIiIpf1//UsyS7jWKTCAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x = np.linspace(0, np.max(H_if_hat) ** 2, N)\n", + "plt.hist(H_if_hat**2, bins=50, density=True)\n", + "plt.plot(\n", + " x,\n", + " sp.stats.gamma.pdf(x, k_Z_if_hat, scale=theta_Z_if_hat),\n", + ")\n", + "plt.hist(\n", + " sp.stats.gamma.rvs(k_Z_if_hat, scale=theta_Z_if_hat, size=N),\n", + " bins=50,\n", + " density=True,\n", + " alpha=0.5,\n", + ")\n", + "plt.title(r\"Verification of Effective Channel Gain $Z_{\\hat{i},f}$\")\n", + "plt.xlabel(r\"$x$\")\n", + "plt.ylabel(r\"PDF $f(x)$\")\n", + "plt.ticklabel_format(axis=\"both\", style=\"sci\", scilimits=(0, 0))\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$\\mathcal{V}_{f}=\\zeta_{i,f}\\rho|\\textbf{H}_{i, f}|^2 + \\zeta_{i',f}\\rho|\\textbf{H}_{i', f}|^2$" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [], + "source": [ + "simulation_V_f = zeta_if * rho * H_if**2 + zeta_if_hat * rho * H_if_hat**2" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [], + "source": [ + "mu_V_f = (zeta_if * rho * mu_Z_if) + (\n", + " zeta_if_hat * rho * mu_Z_if_hat\n", + ") # 1st moment of V_f\n", + "\n", + "mu_V_f_2 = rho**2 * (\n", + " (zeta_if * k_Z_if * theta_Z_if) ** 2\n", + " + (zeta_if_hat**2 * k_Z_if_hat * (1 + k_Z_if_hat) * theta_Z_if_hat**2)\n", + " + (\n", + " zeta_if\n", + " * k_Z_if\n", + " * theta_Z_if\n", + " * (zeta_if * theta_Z_if + 2 * zeta_if_hat * k_Z_if_hat * theta_Z_if_hat)\n", + " )\n", + ") # 2nd moment of V_f\n", + "\n", + "k_V_f = mu_V_f**2 / (mu_V_f_2 - mu_V_f**2) # Shape parameter of V_f\n", + "theta_V_f = (mu_V_f_2 - mu_V_f**2) / mu_V_f # Scale parameter of V_f" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjkAAAHHCAYAAABdm0mZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABb2UlEQVR4nO3dd5xU1f3/8dedspXdpS9L7126IhFERJAiETWWxIIl/qKgRtEYSWLUaMSaYKKIGMrXENEoRQyIojQpFpooHaQsyy6wlC2wbWbu74/ZHVl22T5zZ2bfz8djHrv3zp17P3dmLvvmnHPvNUzTNBEREREJMzarCxARERHxB4UcERERCUsKOSIiIhKWFHJEREQkLCnkiIiISFhSyBEREZGwpJAjIiIiYUkhR0RERMKSQo6IiIiEJYUcERERCUsKOSIiIhKWFHLEUtdddx3R0dGcPn36gsvceuutOJ1Ojh49WiPbnD17NoZhcODAgWLz33//fbp160Z0dDSGYbBly5YLLltT1q1bx9NPP11i//293ZpS2ntWlq1bt3LXXXfRpk0boqKiqFOnDn369OGll17i5MmTgSn6HE8//TSGYZCenl7uslZ+JkV1VlRF3+fK7H8oqOhndPfdd+N0OsnPz7/gMqNGjSImJoZDhw7VcJUSSAo5Yql77rmH3Nxc3n333VKfz8jIYMGCBVxzzTUkJibWyDZHjx7N+vXrSUpK8s07fvw4t99+O+3atWPp0qWsX7+ejh07lrpsTVq3bh3PPPNMiZDj7+3WhAu9Zxfy9ttv07dvX7799lt+97vfsXTpUhYsWMCNN97ItGnTuOeeewJYfeWFwmcCof8+B0KPHj1wuVzs2rWr1Oc//fRTPvnkE5544glatmwZ4OqkJjmsLkBqt5EjR9K0aVNmzpzJ+PHjSzw/d+5ccnJyauQf5rNnzxITE0OjRo1o1KhRsed2795NQUEBt912G4MHD/bNL1o+0EqrMdhc6D0rzfr167n//vsZNmwYCxcuJDIy0vfcsGHDePTRR1m6dKm/S66WUPhMwuF9DoQePXoA8MMPP3DRRRcVe87lcjFx4kRat27N448/bkV5UoPUkiOWstvtjBs3jo0bN/L999+XeH7WrFkkJSUxcuRI37w9e/bwq1/9isaNGxMZGUmXLl144403ir2uqBl+06ZN/OIXv6BevXq0a9cOKNmkfeeddzJw4EAAbr75ZgzD4Iorrih1WYCdO3fyy1/+ksTERCIjI2nZsiV33HEHeXl5AOzdu5e77rqLDh06EBMTQ7NmzRgzZkyJ/Xv66af53e9+B0CbNm0wDAPDMFi5cuUFm93XrFnD0KFDiYuLIyYmhp/97GcsXry41H3ftm0bv/zlL0lISCAxMZG7776bjIyMCnwq5W+nrPesNM8//zyGYTB9+vRif3iLRERE8POf/7zK+7p161ZuvPFGEhISqF+/PhMnTvT9T33EiBHExcXRunVrXnrppVLrS05O5vrrryc+Pp6EhARuu+02jh8/XmyZ8z+Tyr7PFfneAixevJhevXoRGRlJmzZteOWVVy74vp6vKu8zwNGjR8vch8p8pyv6nvjr/auIc0PO+aZNm8b27dt59dVXiYqKqtL6JXgo5Ijl7r77bgzDYObMmcXmb9++nW+++YZx48Zht9t98y6++GJ++OEHXn31Vf73v/8xevRoHnroIZ555pkS677++utp3749H3zwAdOmTSt1+08++aTvH8vnn3+e9evXM3Xq1FKX/e6777j44ov56quv+Mtf/sInn3zC5MmTycvL8/XvHzlyhAYNGvDCCy+wdOlS3njjDRwOB/379y/WPP7rX/+aBx98EID58+ezfv161q9fT58+fUrd9qpVq7jyyivJyMhgxowZzJ07l7i4OMaMGcP7779fYvkbbriBjh07Mm/ePJ544gneffddHnnkkVLXXdntVOY9c7vdLF++nL59+9KiRYtyt1+Vfb3pppvo2bMn8+bN49577+Xvf/87jzzyCGPHjmX06NEsWLCAK6+8kt///vfMnz+/xOuvu+462rdvz4cffsjTTz/NwoULufrqqykoKCi31oq8zxX93n7xxRdce+21xMXF8d577/Hyyy/z3//+l1mzZpVbR1Xe54ruQ0W/05V5TyqzbGWP+/I0bNiQJk2alAg5p06d4umnn2bo0KFcf/31lV6vBCFTJAgMHjzYbNiwoZmfn++b9+ijj5qAuXv3bt+8q6++2mzevLmZkZFR7PUPPPCAGRUVZZ48edI0TdN86qmnTMD885//XGJbs2bNMgFz//79vnkrVqwwAfODDz4oc9krr7zSrFu3rnns2LEK75vL5TLz8/PNDh06mI888kix515++eUStVyoxksvvdRs3LixmZWVVWzd3bt3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XTp06ODrn/ennj178s033/DUU08xadIksrKyaNKkCVdeeSURERGA9x9kp9PJ5MmTyc7Opk+fPsyfP58//elPJdZ3xRVXMGnSJP7v//6Pt99+G4/Hc8HBroMHD2b58uU89dRT3HnnnXg8Hnr27MmiRYtKDLytDn9t59577+WSSy7h73//Oy+++CJpaWk4nU46duzIr371Kx544AG/13Ah8+fP5+mnn+bNN9/EMAzGjBnDlClTfJ9pdVX0e1t0Eb8//elP3HzzzTRp0oTx48eTk5NT4VOlK/M+V1RlvtP+4K/jvkePHmzfvp3bb7+dAQMGlLrM999/75fvnASGYZqmaXURwcQwDBYsWOAbYPb+++9z6623sm3bNt+1WorUqVOHJk2aUFBQwL59+8pcb7169UhMTGThwoVcd911xdbldrsxDAObzUZeXl6J7YiIiDXq1avH999/H7BWK6lZaskpR+/evXG73Rw7doxBgwaVuozT6aRz584VWt/QoUNLXCX0rrvuonPnzvz+979XwBERCRLJyckYhqGAE8IUcvCe6bR3717f9P79+9myZQv169enY8eO3Hrrrdxxxx28+uqr9O7dm/T0dJYvX85FF11U6abSuLg4unfvXmxebGwsDRo0KDFfRESs06JFiwqNhZLgpZADbNiwgSFDhvimJ06cCMC4ceOYPXs2s2bN4rnnnuPRRx8lJSWFBg0aMGDAgICMAREREZGq0ZgcERERCUu6To6IiIiEJYUcERERCUu1dkyOx+PhyJEjxMXF1fiFxURERMQ/TNMkKyuLpk2blnoBx/MXttzzzz9v9uvXz6xTp47ZqFEj89prrzV37txZ5mtWrFhhAiUeO3bsqNA2k5OTS329HnrooYceeugR/I/k5ORy/9YHRUvOqlWrmDBhAhdffDEul4s//vGPDB8+nO3btxMbG1vma3ft2kV8fLxvulGjRhXaZlxcHOC9DsK5rxcREZHglZmZSYsWLXx/x8sSFCFn6dKlxaZnzZpF48aN2bhxI5dffnmZr23cuHGV7oJb1EUVHx+vkCMiIhJiKjLUJCgHHmdkZABQv379cpft3bs3SUlJDB069IL3/AHvvaYyMzOLPURERCR8BV3IMU2TiRMnMnDgwDKvAJyUlMT06dOZN28e8+fPp1OnTgwdOpTVq1eXuvzkyZNJSEjwPVq0aOGvXRAR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N9lr06YNS5Ys4ZFHHuGNN96gadOm/OMf/wiOa+SIiIhIUAiKkAMwfvx4xo8fX+pzs2fPLjFv8ODBbNq0yc9VVU1kZCRPPfVUie6xcKH9C23hvH/hvG+g/Qt12r/AC4qLAYqIiIjUtKAYkyMiIiJS0xRyREREJCwp5IiIiEhYUsgRERGRsKSQUwFTp06lTZs2REVF0bdvX7788ssyl1+1ahV9+/YlKiqKtm3bMm3atBLLzJs3j65duxIZGUnXrl1ZsGCBv8ovV2X2b/78+QwbNoxGjRoRHx/PgAED+PTTT4stM3v2bAzDKPHIzc31966UqjL7t3LlylJr37lzZ7HlQvXzu/POO0vdv27duvmWCabPb/Xq1YwZM4amTZtiGAYLFy4s9zWhcvxVdt9C7dir7P6F2rFX2f0LpWNv8uTJXHzxxcTFxdG4cWPGjh3Lrl27yn1dMB57CjnleP/993n44Yf54x//yObNmxk0aBAjR44sdt2ec+3fv59Ro0YxaNAgNm/ezB/+8Aceeugh5s2b51tm/fr13Hzzzdx+++1899133H777dx00018/fXXgdotn8ru3+rVqxk2bBhLlixh48aNDBkyhDFjxrB58+Ziy8XHx5OamlrsERUVFYhdKqay+1dk165dxWrv0KGD77lQ/vxee+21YvuVnJxM/fr1ufHGG4stFyyf35kzZ+jZsyevv/56hZYPpeOvsvsWasdeZfevSKgce5Xdv1A69latWsWECRP46quvWLZsGS6Xi+HDh3PmzJkLviZojz1TynTJJZeY9913X7F5nTt3Np944olSl3/88cfNzp07F5v3m9/8xrz00kt90zfddJM5YsSIYstcffXV5i233FJDVVdcZfevNF27djWfeeYZ3/SsWbPMhISEmiqxWiq7fytWrDAB89SpUxdcZzh9fgsWLDANwzAPHDjgmxdMn9+5AHPBggVlLhNqx1+RiuxbaYL52DtXRfYv1I69c1Xl8wulY+/YsWMmYK5ateqCywTrsaeWnDLk5+ezceNGhg8fXmz+8OHDWbduXamvWb9+fYnlr776ajZs2EBBQUGZy1xonf5Slf07n8fjISsri/r16xebn52dTatWrWjevDnXXHNNif9tBkJ19q93794kJSUxdOhQVqxYUey5cPr8ZsyYwVVXXeW7uniRYPj8qiKUjr/qCuZjrzpC4dirCaF07GVkZACU+K6dK1iPPYWcMqSnp+N2u0vcDT0xMbHEXdCLpKWllbq8y+UiPT29zGUutE5/qcr+ne/VV1/lzJkz3HTTTb55nTt3Zvbs2SxatIi5c+cSFRXFZZddxp49e2q0/vJUZf+SkpKYPn068+bNY/78+XTq1ImhQ4eyevVq3zLh8vmlpqbyySef8Otf/7rY/GD5/KoilI6/6grmY68qQunYq65QOvZM02TixIkMHDiQ7t27X3C5YD32gua2DsHMMIxi06ZplphX3vLnz6/sOv2pqrXMnTuXp59+mo8++ojGjRv75l966aVceumlvunLLruMPn368M9//pN//OMfNVd4BVVm/zp16kSnTp180wMGDCA5OZlXXnmFyy+/vErr9Leq1jJ79mzq1q3L2LFji80Pts+vskLt+KuKUDn2KiMUj72qCqVj74EHHmDr1q2sWbOm3GWD8dhTS04ZGjZsiN1uL5Eyjx07ViKNFmnSpEmpyzscDho0aFDmMhdap79UZf+KvP/++9xzzz3897//5aqrripzWZvNxsUXXxzw/41UZ//OdemllxarPRw+P9M0mTlzJrfffjsRERFlLmvV51cVoXT8VVUoHHs1JViPveoIpWPvwQcfZNGiRaxYsYLmzZuXuWywHnsKOWWIiIigb9++LFu2rNj8ZcuW8bOf/azU1wwYMKDE8p999hn9+vXD6XSWucyF1ukvVdk/8P4v8s477+Tdd99l9OjR5W7HNE22bNlCUlJStWuujKru3/k2b95crPZQ//zAe/bE3r17ueeee8rdjlWfX1WE0vFXFaFy7NWUYD32qiMUjj3TNHnggQeYP38+y5cvp02bNuW+JmiPPb8NaQ4T7733nul0Os0ZM2aY27dvNx9++GEzNjbWNyL+iSeeMG+//Xbf8j/++KMZExNjPvLII+b27dvNGTNmmE6n0/zwww99y6xdu9a02+3mCy+8YO7YscN84YUXTIfDYX711VdBv3/vvvuu6XA4zDfeeMNMTU31PU6fPu1b5umnnzaXLl1q7tu3z9y8ebN51113mQ6Hw/z666+Dfv/+/ve/mwsWLDB3795t/vDDD+YTTzxhAua8efN8y4Ty51fktttuM/v371/qOoPp88vKyjI3b95sbt682QTMv/3tb+bmzZvNgwcPmqYZ2sdfZfct1I69yu5fqB17ld2/IqFw7N1///1mQkKCuXLlymLftbNnz/qWCZVjTyGnAt544w2zVatWZkREhNmnT59ip9GNGzfOHDx4cLHlV65cafbu3duMiIgwW7dubb755psl1vnBBx+YnTp1Mp1Op9m5c+diB3KgVWb/Bg8ebAIlHuPGjfMt8/DDD5stW7Y0IyIizEaNGpnDhw83161bF8A9Kq4y+/fiiy+a7dq1M6Oiosx69eqZAwcONBcvXlxinaH6+ZmmaZ4+fdqMjo42p0+fXur6gunzKzqt+ELft1A+/iq7b6F27FV2/0Lt2KvKdzNUjr3S9gswZ82a5VsmVI49o3CHRERERMKKxuSIiIhIWFLIERERkbCkkCMiIiJhSSFHREREwpJCjoiIiIQlhRwREREJSwo5IiIiEpYUckRERKRGrV69mjFjxtC0aVMMw2DhwoVVXtfevXuJi4ujbt26lX6tQo6IiIjUqDNnztCzZ09ef/31aq2noKCAX/7ylwwaNKhKr1fIERERkRo1cuRInnvuOa6//vpSn8/Pz+fxxx+nWbNmxMbG0r9/f1auXFliuT/96U907tyZm266qUp1KOSISNiYO3cuUVFRpKSk+Ob9+te/pkePHmRkZFhYmYic66677mLt2rW89957bN26lRtvvJERI0awZ88e3zLLly/ngw8+4I033qjydhRyRCRs3HLLLXTq1InJkycD8Mwzz/Dpp5/yySefkJCQYHF1IgKwb98+5s6dywcffMCgQYNo164djz32GAMHDmTWrFkAnDhxgjvvvJPZs2cTHx9f5W05aqpoERGrGYbBX//6V37xi1/QtGlTXnvtNb788kuaNWtmdWkiUmjTpk2YpknHjh2Lzc/Ly6NBgwYA3HvvvfzqV7/i8ssvr9a2dBdyEQk7ffr0Ydu2bXz22WcMHjzY6nJEajXDMFiwYAFjx44F4P333+fWW29l27Zt2O32YsvWqVOHJk2aULduXbKzs33zTdPE4/Fgt9uZPn06d999d4W2rZYcEQkrn376KTt37sTtdpOYmGh1OSJynt69e+N2uzl27NgFz5pav349brfbN/3RRx/x4osvsm7dukq1zCrkiEjY2LRpEzfeeCNvvfUW7733Hk8++SQffPCB1WWJ1DrZ2dns3bvXN71//362bNlC/fr16dixI7feeit33HEHr776Kr179yY9PZ3ly5dz0UUXMWrUKLp06VJsfRs2bMBms9G9e/dK1aGQIyJh4cCBA4wePZonnniC22+/na5du3LxxRezceNG+vbta3V5IrXKhg0bGDJkiG964sSJAIwbN47Zs2cza9YsnnvuOR599FFSUlJo0KABAwYMYNSoUTVah8bkiEjIO3nyJJdddhmXX345b731lm/+tddeS15eHkuXLrWwOhGxikKOiIiIhCVdJ0dERETCkkKOiIiIhCWFHBEREQlLCjkiIiISlhRyREREJCwp5IiIiEhYUsgRERGRsKSQIyIiImFJIUdERETCkkKOiIiIhCWFHBEREQlLCjkiIiISlv4/QabkXg1LgzwAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x = np.linspace(0, np.max(simulation_V_f), N)\n", + "plt.hist(simulation_V_f, bins=50, density=True)\n", + "plt.plot(\n", + " x,\n", + " sp.stats.gamma.pdf(x, k_V_f, scale=theta_V_f),\n", + ")\n", + "plt.hist(\n", + " sp.stats.gamma.rvs(k_V_f, scale=theta_V_f, size=N),\n", + " bins=50,\n", + " density=True,\n", + " alpha=0.5,\n", + ")\n", + "plt.title(r\"Verification of Combined Channel $V_{f}$\")\n", + "plt.xlabel(r\"$x$\")\n", + "plt.ylabel(r\"PDF $f(x)$\")\n", + "plt.ticklabel_format(axis=\"both\", style=\"sci\", scilimits=(0, 0))\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$\\mathcal{B}_{f}=\\zeta_{i,c}\\rho|\\textbf{H}_{i, f}|^2 + \\zeta_{i',c}\\rho|\\textbf{H}_{i', f}|^2 + 1$\n", + "\n", + "$\\mathcal{B}_{f}=\\mathcal{W}_{f} + 1$\n", + "\n", + "$\\mathcal{W}_{f}=\\zeta_{i,c}\\rho|\\textbf{H}_{i, f}|^2 + \\zeta_{i',c}\\rho|\\textbf{H}_{i', f}|^2$" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [], + "source": [ + "simulation_W_f = zeta_ic * rho * H_if**2 + zeta_ic_hat * rho * H_if_hat**2\n", + "simulation_B_f = simulation_W_f + 1" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [], + "source": [ + "mu_W_f = (zeta_ic * rho * mu_Z_if) + (\n", + " zeta_ic_hat * rho * mu_Z_if_hat\n", + ") # 1st moment of W_f\n", + "\n", + "mu_W_f_2 = rho**2 * (\n", + " (zeta_ic * k_Z_if * theta_Z_if) ** 2\n", + " + (zeta_ic_hat**2 * k_Z_if_hat * (1 + k_Z_if_hat) * theta_Z_if_hat**2)\n", + " + (\n", + " zeta_ic\n", + " * k_Z_if\n", + " * theta_Z_if\n", + " * (zeta_ic * theta_Z_if + 2 * zeta_ic_hat * k_Z_if_hat * theta_Z_if_hat)\n", + " )\n", + ") # 2nd moment of W_f\n", + "\n", + "k_W_f = mu_W_f**2 / (mu_W_f_2 - mu_W_f**2) # Shape parameter of W_f\n", + "theta_W_f = (mu_W_f_2 - mu_W_f**2) / mu_W_f # Scale parameter of W_f" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAHHCAYAAACcHAM1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABTOUlEQVR4nO3deXwU9eHG8c/sbg5ycgQCgXDf96WUyxuF4oH3gYpHbRVsVWyrWKxaq1GpVX+1oFCLbVGwWqRYFUUREAFFDkFQ7iOc4cxFrt2d3x+brMQEkk12d2aT5/167SvZ2c3Ok000D9/vd2YM0zRNRERERGzMYXUAERERkaqosIiIiIjtqbCIiIiI7amwiIiIiO2psIiIiIjtqbCIiIiI7amwiIiIiO2psIiIiIjtqbCIiIiI7amwiIiIiO2psIiIiIjtqbBIrVx55ZU0aNCAEydOnPY5Y8eOJSoqikOHDgVln6+//jqGYbBr165y29966y169OhBgwYNMAyDdevWnfa5wbJ8+XIef/zxCt9/qPcbLJW9Z2eyfv16br/9dtq1a0dsbCwJCQn079+f5557jmPHjoUn9Ckef/xxDMPgyJEjVT7Xyp9JWc7qqu77HMj3Hwmq+zP617/+hWEYLF++vNx2r9dLp06dKn3M4/HQpk0bhg4dGuzYEiYqLFIrd955J4WFhbz55puVPp6dnc27777LpZdeSmpqalD2OXr0aFasWEGLFi382w4fPswtt9xChw4dWLBgAStWrKBz586VPjeYli9fzhNPPFGhsIR6v8FwuvfsdGbMmMGAAQNYtWoVv/nNb1iwYAHvvvsu1157La+88gp33nlnGNMHLhJ+JhD573M4NGzYEPD9/+VU8+fPZ9u2bZU+9s4777Bnzx4efPDBsGSU4HNZHUAi26hRo0hLS+Pvf/8748ePr/D47NmzKSgoCMr/ZE+ePElcXBxNmzaladOm5R7bsmULJSUl3HzzzZx77rn+7WXPD7fKMtrN6d6zyqxYsYJ77rmHESNGMG/ePGJiYvyPjRgxggcffJAFCxaEOnKtRMLPpC68z+FwusLy/PPPc95557FkyZIKj73wwgt06NCBMWPGhCmlBJtGWKRWnE4n48aNY/Xq1WzYsKHC4zNnzqRFixaMGjXKv23r1q3cdNNNNGvWjJiYGLp168Zf//rXcl9XNtS9Zs0arrnmGho1akSHDh2AisPGt912G8OGDQPg+uuvxzAMzjvvvEqfC/D9999z4403kpqaSkxMDK1bt+bWW2+lqKgIgG3btnH77bfTqVMn4uLiaNmyJZdddlmF7+/xxx/nN7/5DQDt2rXDMAwMw2Dx4sWnHdpetmwZF154IYmJicTFxTFkyBDef//9Sr/3jRs3cuONN5KcnExqaip33HFHhf8Jn05V+znTe1aZp59+GsMwmD59erk/omWio6O5/PLLa/y9rl+/nmuvvZbk5GQaN27MxIkTcbvdbN68mZEjR5KYmEjbtm157rnnKs2XmZnJVVddRVJSEsnJydx8880cPny43HN+/DMJ9H2uzu8twPvvv0/fvn2JiYmhXbt2/OlPfzrt+/pjNXmfAQ4dOnTG7yGQ3+nqviehev+qo6yw5OTk+Ld99dVXLFu2jN/+9rfEx8eXy7B8+XK+/PJLHnjgARwO/dmLVPrJSa3dcccdGIbB3//+93LbN23axFdffcW4ceNwOp3+bWeddRbffvstzz//PP/73/8YPXo0v/rVr3jiiScqvPZVV11Fx44defvtt3nllVcq3f+jjz7q/x/f008/zYoVK5g6dWqlz/3mm28466yzWLlyJX/4wx/48MMPycjIoKioiOLiYgD2799PkyZNeOaZZ1iwYAF//etfcblcDBo0iM2bN/tf62c/+xm//OUvAZg7dy4rVqxgxYoV9O/fv9J9L1myhAsuuIDs7Gxee+01Zs+eTWJiIpdddhlvvfVWhedfffXVdO7cmf/85z88/PDDvPnmmzzwwAOVvnag+wnkPfN4PCxatIgBAwaQnp5e5f5r8r1ed9119OnTh//85z/cddddvPDCCzzwwAOMGTOG0aNH8+6773LBBRfw0EMPMXfu3Apff+WVV9KxY0feeecdHn/8cebNm8cll1xCSUlJlVmr8z5X9/f2008/5YorriAxMZE5c+YwZcoU/v3vfzNz5swqc9Tkfa7u91Dd3+lA3pNAnhvof/dVqWyE5fnnn6dnz56MGjWK5OTkco/9+c9/pnHjxtx2220B70tsxBQJgnPPPddMSUkxi4uL/dsefPBBEzC3bNni33bJJZeYrVq1MrOzs8t9/b333mvGxsaax44dM03TNB977DETMH//+99X2NfMmTNNwNy5c6d/22effWYC5ttvv33G515wwQVmw4YNzaysrGp/b2632ywuLjY7depkPvDAA+UemzJlSoUsp8v4k5/8xGzWrJmZm5tb7rV79uxptmrVyvR6veW+9+eee67ca44fP96MjY31P+90qruf071nP3bw4EETMG+44YYzPq8mGcq+1+eff77c1/ft29cEzLlz5/q3lZSUmE2bNjWvuuoq/7ayr//xz+WNN94wAXPWrFn+bT/+mQTyPlf393bQoEFmWlqaWVBQ4H9OTk6O2bhxY7Oq/93W5H2u6e/K6X6nA3m9ULx/lf13U5mcnBwTMCdPnmyapmnu2rXLdDqd5syZM03TNM1u3bqZjzzyiGmaprlz507T6XT675f59NNPzS5duphJSUnmM888c8b9iT3UuRGWpUuXctlll5GWloZhGMybNy9s+87IyMAwDO6///6w7dMu7rzzTo4cOcL8+fMBcLvdzJo1i+HDh9OpUycACgsL+fTTT7nyyiuJi4vD7Xb7bz/96U8pLCxk5cqV5V736quvDlrGkydPsmTJEq677rozrmVwu908/fTTdO/enejoaFwuF9HR0WzdupXvvvuuRvvOz8/nyy+/5JprriEhIcG/3el0csstt7B3794K/9L98dB/7969KSwsJCsrK6j7CbaaZLj00kvL3e/WrRuGYZSbSnS5XHTs2JHdu3dX2OfYsWPL3b/uuutwuVx89tlnVeat6n2u7u9tfn4+q1at4qqrriI2Ntb/emUjS6FU1fcQ6O90IL97wXr/ApGYmIjL5fKPorz44oukpqZy0003AZCUlOR/7KWXXsLpdPpHQ8vcd999PPXUU2RnZ/PQQw8FtH+xRp0rLPn5+fTp04eXX345rPtdtWoV06dPp3fv3mHdr11cc801JCcn+4e+P/jgAw4dOlRuse3Ro0dxu9385S9/ISoqqtztpz/9KUCFwzODeUTH8ePH8Xg8tGrV6ozPmzhxIo8++ihjxozhvffe48svv2TVqlX06dOHgoKCGu/bNM1Kv5+0tDTA9/6cqkmTJuXul61pOFOGmuynKikpKcTFxbFz585qPb8mGRo3blzufnR0NHFxceX+8JdtLywsrPC6zZs3L3ff5XLRpEmTan2vVb3P1f29PX78OF6vt0KWyvJVJtD3OZDvIdDf6UB+94L1/gUqKSmJnJwc/7Tjr371K6KjowH8U0I5OTm89tprjB071v8zyMvLIyEhgY0bNzJu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nk1sbCz79u3zb/vZz35G7969yc7OtjCZiJS5/fbb+eKLL5gzZw7r16/n2muvZeTIkWzdurXS52/bto0FCxZw7rnnBrwvXUtIRGzJNE369u3L8OHDefnll3niiSf429/+xsqVK2nZsqXV8UTqHcMwePfddxkzZgwA27dvp1OnTuzdu5e0tDT/8y666CLOPvvsclM+Q4YMYc2aNRQVFfHzn/+cadOm4XAENmaiKSERsSXDMHjqqae45pprSEtL46WXXuLzzz9XWRGxiTVr1mCaJp07dy63vaioiCZNmpTb9tZbb5Gbm8s333zDb37zG/70pz/x29/+NqD9qbCIiG1deumldO/enSeeeIKPP/6YHj16WB1JREp5vV6cTierV6/G6XSWeywhIaHc/fT0dAC6d++Ox+Ph5z//OQ8++GCFrzsTFRYRsa2PPvqI77//Ho/HQ2pqqtVxROQU/fr1w+PxkJWVxfDhw6v9daZpUlJSQqArUlRYRMSW1qxZw7XXXsurr77KnDlzePTRR3n77betjiVSr+Tl5bFt2zb//Z07d7Ju3ToaN25M586dGTt2LLfeeivPP/88/fr148iRIyxatIhevXrx05/+lDfeeIOoqCh69epFTEwMq1evZtKkSVx//fW4XAFWEFNExGZ27txpNm/e3HzqqadM0zTNr7/+2jQMw/z6668tTiZSv3z22WcmUOE2btw40zRNs7i42Pz9739vtm3b1oyKijKbN29uXnnlleb69etN0zTNOXPmmP379zcTEhLM+Ph4s3v37ubTTz9tFhQUBJxFRwmJiK0cO3aMoUOHcs455/Dqq6/6t19xxRUUFRWxYMECC9OJiFVUWERERMT2dOI4ERERsT0VFhEREbE9FRYRERGxPRUWERERsT0VFhEREbE9FRYRERGxPRUWERERsT0VFhEREbE9FRYRERGxPRUWERERsT0VFhEREbE9FRYRERGxvf8Hgv0K2uHQFu4AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x = np.linspace(0, np.max(simulation_W_f), N)\n", + "plt.hist(simulation_W_f, bins=50, density=True)\n", + "plt.plot(\n", + " x,\n", + " sp.stats.gamma.pdf(x, k_W_f, scale=theta_W_f),\n", + ")\n", + "plt.hist(\n", + " sp.stats.gamma.rvs(k_W_f, scale=theta_W_f, size=N),\n", + " bins=50,\n", + " density=True,\n", + " alpha=0.5,\n", + ")\n", + "plt.title(r\"Verification of Combined Channel $W_{f}$\")\n", + "plt.xlabel(r\"$x$\")\n", + "plt.ylabel(r\"PDF $f(x)$\")\n", + "plt.ticklabel_format(axis=\"both\", style=\"sci\", scilimits=(0, 0))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [], + "source": [ + "mu_B_f = mu_W_f + 1 # 1st moment of B_f\n", + "mu_B_f_2 = mu_W_f_2 + 2 * mu_W_f + 1 # 2nd moment of B_f\n", + "\n", + "k_B_f = mu_B_f**2 / (mu_B_f_2 - mu_B_f**2) # Shape parameter of B_f\n", + "theta_B_f = (mu_B_f_2 - mu_B_f**2) / mu_B_f # Scale parameter of B_f" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlQAAAHHCAYAAAB5gsZZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABh7UlEQVR4nO3deXxU1f3/8desSQgkLIGEsIZNCCBIohEUUFRWq7gUsBq1tf5KbavA1xZwqdXWAvXbVq0stUWttQW+FlBUUIIiBRNRIjsoi+wQQ1gS1iQzc35/TDISE0L2O5m8n4/HfWTmzJl7Pnduwnw459xzbcYYg4iIiIhUmd3qAERERETqOyVUIiIiItWkhEpERESkmpRQiYiIiFSTEioRERGRalJCJSIiIlJNSqhEREREqkkJlYiIiEg1KaESERERqSYlVCIiIiLVpIRKREREpJqUUInUkNtuu42IiAhOnjx50Tp33303LpeLb775pkbafO2117DZbOzdu7dE+YIFC+jZsycRERHYbDY2bNhw0bo1JT09nd/85jeljr+2260pZX1mZSk+nuItPDycuLg4rr/+eqZNm0Z2dnbdBl7L6ur8Xez3R6S+UEIlUkMeeOABzp8/z7///e8yX8/NzWXx4sXcfPPNxMbG1kibo0aNIiMjg9atWwfKjh49SmpqKp07d+b9998nIyODbt26lVm3JqWnp/P000+X+kKs7XZrwsU+s/K8+uqrZGRkkJaWxsyZM+nbty8zZsygR48erFixoo4ir311df4u9vtT2+bNm8czzzzDHXfcQX5+PosXL+buu++mV69exMbGsmjRojqNR+ovp9UBiISKESNGEB8fzyuvvMJDDz1U6vV58+Zx7tw5HnjggWq3dfbsWRo1akTLli1p2bJlidd27NhBYWEh99xzD4MHDw6UF9eva2XFGGwu9pmVp1evXiQnJwee33HHHUycOJFrr72W22+/nZ07d9ZY4myl+nD+Lqb476Q8V1xxBffccw833ngjv/71r+nTpw9vvPEG4P+bfuGFF7j99tvrIlyp74yI1JipU6cawGzatKnUa1dddZVp3bq18Xg8gbIdO3aYu+66y7Rs2dK43W7TvXt389JLL5V431NPPWUAk5mZae644w7TtGlTExcXZ4wx5tVXXzWA2bNnjzHGmPvuu88AJbbBgweXWdcYY7Zv327GjRtnWrVqZdxut2nXrp1JTU0158+fN8YYs3PnTnP//febLl26mIiICBMfH29uvvnmUsdXHON3t5UrV5bZrjHGrF692gwZMsQ0btzYREREmP79+5t33323zP1u2bLFjBs3zkRFRZlWrVqZH/7wh+bkyZMVOieXaqe8z6wsxcfz+eefl/n6//3f/xnAPP300yXKK3OuK3q8lfkMN27caO68804TFRVlmjVrZiZOnGgKCwvNl19+aYYNG2YaN25sOnToYGbMmFHm8V54/ioaZ038/lT2OMv6OynP1q1bDWDi4+PN8uXLS7w2ePBgM3369EvuQ8QYYzTkJ1KDfvSjH2Gz2XjllVdKlG/bto3PPvuM++67D4fDESi78sor2bJlC3/84x959913GTVqFA8//DBPP/10qX3ffvvtdOnShTfffJM5c+aU2f6TTz7JzJkzAfj9739PRkYGs2bNKrPuxo0bufLKK/n000955plnWLZsGdOmTSM/P5+CggIADh8+TIsWLZg+fTrvv/8+M2fOxOl0kpKSwldffRXY149//GN+8YtfALBo0SIyMjLIyMigX79+Zba9atUqhgwZQm5uLnPnzmXevHk0adKE733veyxYsKBU/TvuuINu3bqxcOFCpkyZwr///W8mTpxY5r4r205lPrOKGDlyJA6Hg//+97+Bssqe64ocb2U/wzFjxtCnTx8WLlzIgw8+yJ///GcmTpzI6NGjGTVqFIsXL2bIkCFMnjy5wsNcl4qzJn5/KnucFfk7udB7770HwI033shNN90E+Hssf/CDH3DTTTcxefLkCn0WIuqhEqlhgwcPNjExMaagoCBQ9j//8z8GMDt27AiUDRs2zLRt29bk5uaWeP/Pf/5zEx4ebo4fP26M+fZ/3r/+9a9LtVVW78HKlSsNYN58881y6w4ZMsQ0bdrUZGdnV/jYPB6PKSgoMF27djUTJ04s8dpzzz1XZk9UWTFeffXVplWrVubUqVMl9t2rVy/Ttm1b4/P5Shz7H/7whxL7fOihh0x4eHig3sVUtJ2LfWZluVQPlTHGxMbGmh49egSeV/ZcV+R4K/sZ/vGPfyyxz759+xrALFq0KFBWWFhoWrZsaW6//fZSx1tWD1Vlz0tVfn8qe5xl/Z2UZ9CgQQYw7733nrn22mtN27ZtDWDGjBljtm/fXqr+hx9+aC677DITFRWl3isp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WYYbbriBzZs3s2HDhsCWnJzM3XffzYYNG+jUqZPOiwWuueaaUsuK7Nixgw4dOgD6e7HS2bNnsdtLftU7HI7Asgk6NzXIgonwUgOKl02YO3eu2bZtm5kwYYKJjIw0e/futTq0kPDTn/7UREdHm48//tgcOXIksJ09ezZQZ/r06SY6OtosWrTIbN682dx1111lXmrctm1bs2LFCvPFF1+YIUOGlHmp8eWXX24yMjJMRkaG6d27d4O61Li6LrzKzxidFyt89tlnxul0mmeffdbs3LnT/Otf/zKNGjUyb7zxRqCOzos17rvvPtOmTZvAsgmLFi0yMTEx5le/+lWgjs5NzVBCVY/NnDnTdOjQwbjdbtOvX7/AJf1SfUCZ26uvvhqo4/P5zFNPPWXi4uJMWFiYGTRokNm8eXOJ/Zw7d878/Oc/N82bNzcRERHm5ptvNvv37y9R59ixY+buu+82TZo0MU2aNDF33323OXHiRB0cZWj4bkKl82KNd955x/Tq1cuEhYWZ7t27m5dffrnE6zov1sjLyzOPPPKIad++vQkPDzedOnUyjz/+uMnPzw/U0bmpGTZjjLGyh0xERESkvtMcKhEREZFqUkIlIiIiUk1KqERERESqSQmViIiISDUpoRIRERGpJiVUIiIiItWkhEpERESkmpRQiYiIiFSTEioRERGRalJCJSIiIlJNSqhERKpg3rx5hIeHc+jQoUDZj3/8Yy6//HJyc3MtjExErKB7+YmIVIExhr59+zJw4EBeeuklnn76af7+97/z6aef0qZNG6vDE5E65rQ6ABGR+shms/Hss89y5513Eh8fzwsvvMDq1auVTIk0UOqhEhGphn79+rF161aWL1/O4MGDrQ5HRCyiOVQiIlX0wQcf8OWXX+L1eomNjbU6HBGxkHqoRESq4IsvvuC6665j5syZzJ8/n0aNGvHmm29aHZaIWERzqEREKmnv3r2MGjWKKVOmkJqaSmJiIldeeSWZmZkkJSVZHZ6IWEA9VCIilXD8+HGuueYaBg0axF//+tdA+a233kp+fj7vv/++hdGJiFWUUImIiIhUkyali4iIiFSTEioRERGRalJCJSIiIlJNSqhEREREqkkJlYiIiEg1KaESERERqSYlVCIiIiLVpIRKREREpJqUUImIiIhUkxIqERERkWpSQiUiIiJSTUqoRERERKrp/wMAYvy3Cu/esQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x = np.linspace(0, np.max(simulation_B_f), N)\n", + "plt.hist(simulation_B_f, bins=50, density=True)\n", + "plt.plot(\n", + " x,\n", + " sp.stats.gamma.pdf(x, k_B_f, scale=theta_B_f),\n", + ")\n", + "plt.hist(\n", + " sp.stats.gamma.rvs(k_B_f, scale=theta_B_f, size=N),\n", + " bins=50,\n", + " density=True,\n", + " alpha=0.5,\n", + ")\n", + "plt.title(r\"Verification of Denominator $\\mathcal{B}_{f}$\")\n", + "plt.xlabel(r\"$x$\")\n", + "plt.ylabel(r\"PDF $f(x)$\")\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "simcomm", + "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.10.12" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +}