{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "4bcd49a4",
"metadata": {
"nbsphinx": "hidden"
},
"outputs": [],
"source": [
"# Install HermesPy and its dependencies in the current kernel\n",
"# When running on Colabs, a restart of the runtime is required afterwards\n",
"\n",
"import sys\n",
"!{sys.executable} -m pip install --quiet hermespy"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "199efcaa",
"metadata": {},
"source": [
"Implementing Beamformers\n",
"=========================\n",
"\n",
"This Jupyter notebook will outline the step-by-step process of implementing a new receiving beamformer within the HermesPy framework, using the Minimum Variance Distortionless Response (MVDR, also known as Capon) beamformer as a working example.\n",
"\n",
"As an initial step we will import all required modules:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "731daaf7",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"\n",
"from hermespy.core import AntennaArray\n",
"from hermespy.beamforming import ReceiveBeamformer"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "32929b07",
"metadata": {},
"source": [
"The Capon beamformer estimates the power $\\hat{P}$ received from a direction $(\\theta, \\phi)$, where $\\theta$ is the zenith and $\\phi$ is the azimuth angle of interest in spherical coordinates, respectively. \n",
"Let $Y \\in \\mathbb{C}^{M \\times N}$ be the the matrix of $N$ time-discrete samples acquired by an antenna arrary featuring $M$ antennas and\n",
"\n",
"\\begin{equation}\n",
"\\mathbf{R} = \\mathbf{Y}\\mathbf{Y}^{\\mathsf{H}}\n",
"\\end{equation}\n",
"\n",
"be the respective sample correlation matrix.\n",
"The antenna array's response towards a source within its far field emitting a signal of small relative bandwidth is $\\mathbf{a}(\\theta, \\phi) \\in \\mathbb{C}^{M}$.\n",
"Then, the Capon's spatial power response is defined as \n",
"\n",
"\\begin{equation}\n",
"\\hat{P}_{\\mathrm{Capon}}(\\theta, \\phi) = \\frac{1}{\\mathbf{a}^{\\mathsf{H}}(\\theta, \\phi) \\mathbf{R}^{-1} \\mathbf{a}(\\theta, \\phi)}\n",
"\\end{equation}\n",
"\n",
"with\n",
"\n",
"\\begin{equation}\n",
"\\mathbf{w}(\\theta, \\phi) = \\frac{\\mathbf{R}^{-1} \\mathbf{a}(\\theta, \\phi)}{\\mathbf{a}^{\\mathsf{H}}(\\theta, \\phi) \\mathbf{R}^{-1} \\mathbf{a}(\\theta, \\phi)} \\in \\mathbb{C}^{M}\n",
"\\end{equation}\n",
"\n",
"being the beamforming weights to steer the sensor array's receive characteristics towards direction $(\\theta, \\phi)$, so that\n",
"\n",
"\\begin{equation}\n",
"\\tilde{\\mathbf{y}}(\\theta, \\phi) = \\mathbf{w}^\\mathsf{H}(\\theta, \\phi) \\mathbf{Y}\n",
"\\end{equation}\n",
"\n",
"are the estimated signal samples impinging onto the sensor array from said direction.\n",
"\n",
"The structure of receiving beamformers is implemented as an abstract prototype in the [ReceiveBeamformer](../api/beamforming.beamformer.rst#hermespy.beamforming.beamformer.ReceiveBeamformer).\n",
"Prototypes specify several [abstract](https://docs.python.org/3/library/abc.html#abc.abstractmethod) properties and methods which inheriting classes must implement. For receiving beamformers those are\n",
"\n",
"* [num_receive_input_streams](../api/beamforming.beamformer.rst#hermespy.beamforming.beamformer.ReceiveBeamformer.num_receive_input_streams) - *Number of antenna streams the beamformer can process.* Our Capon implementation will always require the samples of all device antennas.\n",
"\n",
"* [num_receive_output_streams](../api/beamforming.beamformer.rst#hermespy.beamforming.beamformer.ReceiveBeamformer.num_receive_output_streams) - *Number of antenna streams the beamformer generates after processing.* Since the Capon beamformer focuses the power towards a single direction of interest per estimation, a single stream of samples will be generated after beamforming.\n",
"\n",
"* [num_receive_focus_angles](../api/beamforming.beamformer.rst#hermespy.beamforming.beamformer.ReceiveBeamformer.num_receive_focus_points) - *Number of angles of interest the beamformer requires for its configuration.* The same logic as before applies, only a single direction of interest per beamforming operation is required.\n",
"\n",
"* [\\_decode()](../api/beamforming.beamformer.rst#hermespy.beamforming.beamformer.ReceiveBeamformer._decode) - *This subroutine performs the actual beamforming, given an array of baseband samples, assumed carrier frequency and the angles of interest.* \n",
"This is where the Capon algorithm is being implemented."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "bebfb7b5",
"metadata": {},
"outputs": [],
"source": [
"class CaponBeamformer(ReceiveBeamformer):\n",
" \n",
" def __init__(self, *args, **kwargs) -> None:\n",
" \n",
" ReceiveBeamformer.__init__(self, *args, **kwargs)\n",
"\n",
" @property\n",
" def num_receive_input_streams(self) -> int:\n",
" return self.operator.device.num_receive_ports\n",
" \n",
" @property\n",
" def num_receive_output_streams(self) -> int:\n",
" return 1\n",
" \n",
" @property\n",
" def num_receive_focus_points(self) -> int:\n",
" return 1\n",
" \n",
" def _decode(\n",
" self,\n",
" samples: np.ndarray,\n",
" carrier_frequency: float,\n",
" angles: np.ndarray,\n",
" array: AntennaArray,\n",
" ) -> np.ndarray:\n",
" \n",
" # Compute the inverse sample covariance matrix R\n",
" sample_covariance = np.linalg.inv(samples @ samples.T.conj() + np.eye(samples.shape[0]))\n",
"\n",
" # Query the sensor array response vectors for the angles of interest and create a dictionary from it\n",
" dictionary = np.empty((array.num_receive_antennas, angles.shape[0]), dtype=complex)\n",
" for d, focus in enumerate(angles):\n",
" array_response = array.spherical_phase_response(carrier_frequency, focus[0, 0], focus[0, 1])\n",
" dictionary[:, d] = sample_covariance @ array_response / (array_response.T.conj() @ sample_covariance @ array_response)\n",
"\n",
" beamformed_samples = dictionary.T.conj() @ samples\n",
" return beamformed_samples[:, np.newaxis, :]"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "7c6f60ca",
"metadata": {},
"source": [
"And that's it, by specifying three properties and the decode routine a new beamformer has been implemented within HermesPy.\n",
"We can now plot the beamforming characteristics towards a signal impinging from $(\\theta = 0, \\phi = 0)$ by calling [plot_pattern](../api/simulation.antennas.SimulatedAntennas.rst#hermespy.simulation.antennas.SimulatedAntennas.plot_pattern) and compare it to the [CoventionalBeamformer](../api/beamforming.conventional.rst#hermespy.beamforming.conventional.ConventionalBeamformer):"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "943cf8ad",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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4OmSK3G+kHzhPV4ThAtJYEDVxH/2s5/lT3/6EwcOHKCwsJDPfvazfOADH+DAgQMUFRWxYcMGXeFVlci6XC5dUmrNmjUUFRXxrW99i6GhIe69996krODf/e53ufTSSzlz5gyXXnpp2O8HICsri2PHjnHs2LHzOhkqXpgreRhEIln1s5/9jJqaGj3P+cknn+SRRx5J4ayTg4GBAZ566ikOHDjAwMAAl19+Ofv27WPlypX09/dz9uxZxsfHyczMpLS0lCeeeIKmpiZ++ctfJk3fboHmSiTPIymlnOvngsPLL78s3/ve9+q/33333fLuu+8OOua9732vfPnll6WUUnq9XllSUiI1TZvXec43hoaG5AMPPCCvvPJKuWPHDnnbbbfJzZs3y0OHDsmnnnpKVlZWyuLiYvntb39bNjc3J20eBQUF+r81TQv63Qir1Sp37dol9+7dK5988smkzSdBiISLMf2kXl0wDXEhCwzMhqKiIm688UZuvPFGurq6uOyyy8jNzeWWW26huLiYrVu38u///u8cPHiQw4cPs3LlypjPNVuuhBFCiBnDcm1tbUG5EtXV1RdMroQRJslNxIQjR47wjW98g2uvvZbx8XF+9KMf8YUvfIGcnBw+/vGPxz3+bIpEixYt0lsF9/T0zCgtrerFV61axSWXXKILWV5oMB1vYXAhCwxEiiuvvJJrr70WCOx9v/71r89b/fq+fft48MEHAXjwwQfZv3//Occ4nU5dN29gYICXXnrpws2TiMCmv+Dg9XrlypUrZXNzs3S73XLr1q2ytrY26Jh77rlH3nrrrVJKKR966CF5zTXXpGKqFyQGBgbku9/9brlmzRp56aWXysHBQSmllIcOHZI333yzlFLKl156SW7ZskVu3bpVbtmyRd5///2pnHIkSNqe3PSuz4A0FxgwsfBgJsOYMLHAYSbDmDBhIjaYJE8zzJVp98ADD1BWVsb27dvZvn07999/fwpmaeJ8ghlCSyOoVj7GTLt9+/ad4xW+7rrruOeee1I0SxPnG8yVPI2wEJtDmkg9TJKnESJtDnngwAG2bt3K1VdfHRTPN2EiHEySn2e48soraW1tpaamhve85z16gz4TJmaCSXKgo6ODlStXMjQ0BASypVauXDnv5aORZNqVlJToUkO33HILb7zxxrzO0cT5B5PkQGVlJZ/61Ke44447gEAb4k984hNUVVXN6zyMzSE9Hg8PP/ww+/btCzqmp6dH//czzzzDxo0b53WOJs5DRJAWd0HA4/HI6upq+S//8i9y06ZN0uPxpGQezz77rFy7dq1ctWqV/Na3viWllPKf/umf5NNPPy2llPKOO+6QmzZtklu3bpWXXHKJbGhoSMk848Gjjz4qN23aJIUQ8tChQzMe9/zzz8t169bJ1atXy+985zvzOMOUIKVprRcMhBDvAw4C75VSvpDq+SxUCCE2Ahrwb8AXpJSHwxxjBU4D7wE6gUPAh6WU9fM514UA01wPxuVAD7Al1RNZyJBSNkgpZ9fRhj1Ao5SyWUrpAR4Gzi03MzEnTJJPQwixncCq8RbgdiHEktTO6IJHBWCMD3ZO/81ElDBJDoiAtMi9wOeklO3AD4AfpnZW8wshxC+EEH1CiNoZXhdCiJ8IIRqFEDVCiJ1zjPcHIURtmB9zNZ5nmGmtAfwd0G7Yh/8M+LgQ4p1Syv9O4bzmEw8A9wC/nOH1y4G10z97CTwU9840mJTysjjn0wVUGn5fNv03E1HCXMkBKeX/J6W8zvC7X0q58wIiOFLKPwNDsxyyH/jltCf4VaAwyVuaQ8BaIcRKIYQDuB64cHWV44BJchORImF7ZCHEB4UQncDFwLNCiP+c/vtSIcRzAFJKH/Bp4D+BBuBRKWVdHPO/YGGa6ybmHVLKJ4Enw/y9G7jC8PtzwHPzOLUFCXMlNxEpzD3yeQqT5CYixTPADdNe9rcAI1LKnrneZCL1MM11EwAIIR4CLgFKp/fLXwfsAFLK+wiYzVcAjcAkEL+4uol5gZnWasLEAodprpswscBhktyEiQUOk+QmTCxwmCQ3YWKBwyS5CRMLHCbJTZhY4DBJbsLEAsf/D6MXjrf4UXyfAAAAAElFTkSuQmCC",
"text/plain": [
"