Skip to content

Instantly share code, notes, and snippets.

@avivajpeyi
Created October 11, 2024 07:20
Show Gist options
  • Save avivajpeyi/3bbf7271b33226f30aad57422fb5d2a4 to your computer and use it in GitHub Desktop.
Save avivajpeyi/3bbf7271b33226f30aad57422fb5d2a4 to your computer and use it in GitHub Desktop.
monochromatic_analytical_wdm_check.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"authorship_tag": "ABX9TyNOuap2Cfx8csshGUg4rn4t",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/avivajpeyi/3bbf7271b33226f30aad57422fb5d2a4/monochromatic_analytical_wdm_check.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"source": [
"# Monochromatic Signal WDM check\n",
"\n",
"\n",
"We choose to analyse the monochromatic signal\n",
"\n",
"$y(t) = A\\sin(2\\pi f_{0} t)\\, ,$\n",
"\n",
"\n",
"\n",
"with constant amplitude and frequency $A, \\ f_{0} \\in \\mathbb{R}$, sampled at equally spaced time bins $\\Delta t$, for $N$ number of points, such that the observation time is given by\n",
"\n",
"$T_{\\text{obs}} = N\\,\\cdot \\Delta t\\, .$\n",
"\n",
"\n",
"We write the DTFT of the signal as\n",
"\n",
"\n",
"\\begin{align}\n",
"\\tilde{y}[f_{p}] & =\\sum_{k = -N/2}^{N/2 - 1} y[k]\\exp(-2\\pi i p k / N) \\\\\n",
"&= \\frac{A}{2i}\\sum_{k = -N/2}^{N/2 - 1} \\left( e^{i\\left[\\frac{2\\pi}{N}(m_{0} - p)\\right]k} - e^{-i\\left[\\frac{2\\pi}{N}(m_{0} + p)\\right]k}\\right)\\,.\n",
"\\end{align}\n",
"Here we define the integer $m_{0}$ such that the frequency\n",
"\n",
"$f_{0} = m_{0}/(N\\Delta t)$.\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n"
],
"metadata": {
"id": "jaV8w-EDkUdQ"
}
},
{
"cell_type": "code",
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from typing import Tuple\n",
"\n",
"def compute_bins(Nf:int, Nt:int, T:float) -> Tuple[np.ndarray, np.ndarray]:\n",
" \"\"\"Get the bins for the wavelet transform Eq 4-6 in Wavelets paper \"\"\"\n",
" delta_T = T / Nt\n",
" delta_F = 1 / (2 * delta_T)\n",
" t_bins = np.arange(0, Nt) * delta_T\n",
" f_bins = np.arange(0, Nf) * delta_F\n",
" return t_bins, f_bins\n",
"\n",
"def monochromatic_wnm(f0:float, dt:float, A:float, T:float, Nt:int, Nf:int):\n",
" N = Nt * Nf\n",
" t_bins, f_bins = compute_bins(Nf, Nt, T)\n",
" wnm = np.zeros((Nt, Nf))\n",
" m0 = int(f0 * N * dt)\n",
" f0_bin_idx = int( 2 * m0 / Nt)\n",
" odd_t_indices = np.arange(Nt) % 2 != 0\n",
" wnm[odd_t_indices, f0_bin_idx] = A * np.sqrt(2 * Nf)\n",
" return wnm, t_bins, f_bins\n",
"\n",
"\n",
"\n",
"def plot_wnm(analytical_wnm, t_bins, f_bins):\n",
" fig, axs = plt.subplots(1, 1, figsize=(5, 5))\n",
" # x is time, y is freq\n",
" im = axs.imshow(analytical_wnm.T, aspect='auto', extent=[t_bins[0], t_bins[-1], f_bins[0], f_bins[-1]], origin='lower', cmap='Reds', interpolation='none')\n",
" cbar = fig.colorbar(im, ax=axs)\n",
" cbar.set_label(r'$w_{nm}$')\n",
" axs.set_ylabel('Frequency [Hz]')\n",
" axs.set_xlabel('Time (s)')\n",
" return fig, axs\n",
"\n",
"\n",
"\n",
"\n",
"f0 = 20\n",
"dt = 0.0125\n",
"A = 2\n",
"Nt = 128\n",
"Nf = 512\n",
"N = Nt * Nf\n",
"T = N * dt\n",
"analytical_wnm, t_bins, f_bins = monochromatic_wnm(f0, dt, A, T, Nt, Nf)\n",
"fig, axs = plot_wnm(analytical_wnm, t_bins, f_bins)\n",
"axs.axhline(f0, color='k', lw=4, alpha=0.1)\n",
"axs.set_ylim(f0-2.5, f0+2.5)\n",
"axs.set_xlim(0, 100)\n",
"plt.show()\n",
"\n",
"\n",
"\n",
"\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 482
},
"id": "AGdgtNcckg4G",
"outputId": "fc160035-6de3-4f3e-a215-30777e530c8a"
},
"execution_count": 40,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"N=65536\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 500x500 with 2 Axes>"
],
"image/png": "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XFqHDh20YcMGTZ482fmVx9ownTjnzZunoUOHqlOnTiorK9NvfvMbHTlyRC1bttTbb79d60AAAL7jxIkTLl9HudRWqJLUvn177du3T8XFxXr33Xc1YcIE5eTk1Pn933rrLYWHhztbTEyMOnbsqOHDh9dIxmaZTpxt2rTR/v37lZ2drQMHDqikpESTJ0/W+PHjnbv9AACuMBYvDrq4kvXHfHf/8549e2rnzp164YUXdNttt5neq/y73C3n1obpxClJTZs21R133GF1LAAAT/GSvWqrq6tVXl5u6V7lVjOdOBcvXvyD5++6665aBwMAaDxmzZql4cOHKy4uTufOndOSJUu0adMmrV27Vna7XZMnT1ZaWpoiIiKce5UnJiaqb9++Ho27Vt/j/K7KykqdP39eAQEBatasGYkTAK5EHphxnj59WnfddZdOnTolu92ubt26ae3atfrFL34hyXv3KjedOL/66qsax44cOaJ7771XDz74oCVBAQAamMWrat2xaNGiHzwfFBSkBQsWaMGCBXWNylKWPA81ISFBTz/9dI3ZKAAAvqZWi4Mu2VHTpjp58qRV3QEAGpKXLA66EphOnKtWrXJ5bRiGTp06pZdeekn9+vWzLDAAQAOyyaLEWfcuvJ3pxJmcnOzy2mazqVWrVho0aJDmzZtnVVwAAHgl04mzurq6PuIAAHgSpVq3WXaPEwBw5bL5+clmwapaK/rwdqYTZ1pamtvXzp8/32z3AAB4NdOJc+/evdq7d68qKyvVvn17SdLhw4fVpEkTXX/99c7rbI1gug4AvsOiUm0jWB1kOnGOHDlSoaGheuONN3TVVVdJurApwqRJk/Szn/1M999/v+VBAgDqGfc43Wa6GD1v3jylp6c7k6YkXXXVVXriiSdYVQsA8HmmZ5wOh0NnzpypcfzMmTM6d+6cJUEBABoYM063mU6ct9xyiyZNmqR58+bphhtukCRt375dDz74oMaMGWN5gACABuCBvWqvVKYTZ0ZGhh544AH95je/UWVl5YVOmjbV5MmT9ec//9nyAAEA8CamE2ezZs308ssv689//rM+++wzSdJPf/pTNW/e3PLgAAANhFKt22o9pz516pROnTqlhIQENW/eXIZhWBkXAKAhXUycVjQfZzpxfvnllxo8eLCuvfZa3XzzzTp16pQkafLkyXwVBQDg80wnzpkzZ8rf31/5+flq1qyZ8/htt92mNWvWWBocAKCBMON0m+l7nH//+9+1du1atWnTxuV4QkKCjh8/bllgAIAGxKpat5keYWlpqctM86KzZ88qMDDQkqAAAPBWphPnz372My1evNj52mazqbq6Ws8++6xuuukmS4MDADQQSrVuM12qffbZZzV48GDt2rVLFRUVeuihh/Txxx/r7Nmz+uc//1kfMQIA6htfR3Gb6Rlnly5ddPjwYfXv31+jR49WaWmpxowZo7179+qnP/1pfcQIAIDXMDXjrKys1LBhw5SRkaFHHnmkvmICADQ0Fge5zVTi9Pf314EDB+orFgCAp9hkUam27l14O9N/Gtxxxx1atGhRfcQCAIDXM7046JtvvtHrr7+ujz76SD179qyxR+38+fMtCw4A0EBYHOQ204kzNzdX119/vSTp8OHDLudsjeADAwCfROJ0m9uJ89ixY4qPj9fGjRvrMx4AALya2/c4ExISdObMGefr2267TYWFhfUSFACggdn8/reyti7N5vurat0e4fcfG/bBBx+otLTU8oAAAB7AzkFu8/0/DQAAsJDb9zhtNluNxT8sBgIAH8HiILe5nTgNw9DEiROdT0ApKyvTPffcU+PrKMuWLbM2QgBA/bNZdH+yEdzjdDtxTpgwweX1HXfcYXkwAAB4O7cTZ2ZmZn3GAQDwJD/bhWZFPz7O9AYIAAAfRKnWbb4/QgAALMSMEwDAqloTSJwAAJ7HaYLvjxAAAAsx4wQAUKo1gcQJAGBVrQm+P0IAACzEjBMAINlkUam27l14OxInAIBVtSb4/ggBALAQM04AAKtqTSBxAgBYVWuC748QAAALkTgBABdKrH4WNBOl2vT0dPXu3VuhoaGKjIxUcnKyDh065HJNWVmZUlJS1KJFC4WEhGjs2LEqLCy0evSmkDgBAP8r1VrR3JSTk6OUlBRt27ZN69atU2VlpYYMGaLS0lLnNTNnztR7772npUuXKicnRydPntSYMWPq4xNwG/c4AQAesWbNGpfXWVlZioyM1O7duzVgwAAVFxdr0aJFWrJkiQYNGiRJyszMVMeOHbVt2zb17dvXE2Ez4wQA6H+raq1okhwOh0srLy//0RCKi4slSREREZKk3bt3q7KyUklJSc5rOnTooLi4OG3durUePgT3kDgBAJaXamNjY2W3250tPT39B9++urpaqamp6tevn7p0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\n"
},
"metadata": {}
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment