204 lines
165 KiB
Plaintext
204 lines
165 KiB
Plaintext
|
|
{
|
||
|
|
"cells": [
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"\n",
|
||
|
|
"# Spectrogram, power spectral density\n",
|
||
|
|
"\n",
|
||
|
|
"Demo spectrogram and power spectral density on a frequency chirp.\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 1,
|
||
|
|
"metadata": {
|
||
|
|
"collapsed": false,
|
||
|
|
"jupyter": {
|
||
|
|
"outputs_hidden": false
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"import numpy as np\n",
|
||
|
|
"import matplotlib.pyplot as plt"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"## Generate a chirp signal\n",
|
||
|
|
"\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 2,
|
||
|
|
"metadata": {
|
||
|
|
"collapsed": false,
|
||
|
|
"jupyter": {
|
||
|
|
"outputs_hidden": false
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"[<matplotlib.lines.Line2D at 0x11ee9a8a0>]"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"execution_count": 2,
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "execute_result"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"image/png": "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PzI/pue/9SL6uXddbm7m1956Hx1z2oW05ZP2e3v5GVfS8996Md383QfF/vddfBO9+PRL6YzLvin2n33NHXT8Oy+lU//Pf4j9H/virfTcv7yQ/vLcr4v9p/3b1+gZp5xPV3/73n7froUxvegdl9KL33mpuPG884Jv0PHvvJTec9FN/b7v7NxFx/7lhXTsaRcKvyee8Xk66i+2CmD6p5/+Kv3En2+lr965o9/3//3E9fTTb7uYtv7Hd/p9J3/iOvrJv7iArrg5fj+/+J7P0TGnXdgDnMmkpf/6vivoZX9zZX/DOPcr2+mn33YxnfyJeK393ieup6PedAF95Y5uzO07dtEzTzmfTnh//PvzR5/6d3rWqVv7Npd+47v0grdfQr9x5peIqLsh/cSfb6XnvPmzPfh/3T9cQ8f91UV08Q13ERHRVd+6l5516lb6p6tvJyKir9yxg444dSv98T9/hYg6UHPUmy6g1591HRF1N7env/F8+q/v7eIYT1r67x/6Yn8N7Ny1QD9x6lb69env4aa7HqBnnbqV/t+PXk1ERJfd+F165inn09vOv4GIiM649GZ65qnn0z9fewcREW355L/TEadupW/f8xA9Mj+mI990AT3zlPOpbVs676vdefp//r7zdc6/b6Off/fldMvdD9Fk0tLvfvxa2vLJLxMR0d9ddgv9l7dfQm/6168REdHx77yUnv7G82nnrgX61LW300+/7WL6nY93fwde8PZL6JmnnE87Hl6gD15+C73g7ZfQqf/yH9S2Lf32x66l1/791dS2LX3o8lvo8D87j754y710/8Pz9N/+7vP06eu6uH/yLy6gZ526lR7YtUD/85+up+P+6iL69HV30LYdj9B/fd/n6FPX3k73PLibjj7ts/SMN57f9XnTBfTcv7yQ7rz/EfrAJTfT4X92Hn3ljh30zgtupOe/9WJ670U30eduupue/sbz6U3/8h/05dvvp+e/9WL6uXddRm3b0u//4/X0ngtvpF0LY3ran51Hz/6LC2gyaenYv7yQjjh1K80vTujMz91C77v4Jmrblp7xxvPpJ//iAtq5a4GeeWr3+YFdC3Tkmy6gZ//FZ+mR+TH95oevoled+SW676F5evabP0tPf+P5dO/08//8x+vpq3fuoKf92Xn0v87+d/rEVbfRC95+Cf3eWdfR9bfdT6/7h2vojvsfob+77Jv0k39xAd383QfpFR/6Ij3jlPNox8ML9Kef/gq99byv0ze+8wA99U/Poz//l/+gL33rXnrROy6hK266m078myvpmNMupC/eci8d8edb6VmnbqVb7n6InnXK+fSX//Z1+txNd9MrPvRFuu3eh+n4d15Kz3jj+XTFTXfTMaddSC991+X03otuomeeej598prb6cg/v4Ce/ebP0pe+dS897c/Oo//3I9fQuV/ZTr/2t5+n7Tt20QkfuJJOPOPz9KHPfYte8Pbu3vOcN3+W/u+3XET/fO0d9Jw3f5Ze8aEv0hU3301bPvnv9LVtO+mZp5xPLz/jSvrGdx6gt513A337nofo8D87j37uXZfT6/7hGvqpt11MZ1x6Mx35pgvoeX91Ef3Ll++kn3/35fT17TvpNz98Ff3jVbfR/zjzS3TUmy6gT15zO/3Em7bS+y6+iW6952H699t30I5HFug9F95I377nIbr62/f
|
||
|
|
"text/plain": [
|
||
|
|
"<Figure size 800x500 with 1 Axes>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "display_data"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"# Seed the random number generator\n",
|
||
|
|
"np.random.seed(0)\n",
|
||
|
|
"\n",
|
||
|
|
"time_step = 0.01\n",
|
||
|
|
"time_vec = np.arange(0, 70, time_step)\n",
|
||
|
|
"\n",
|
||
|
|
"# A signal with a small frequency chirp\n",
|
||
|
|
"sig = np.sin(0.5 * np.pi * time_vec * (1 + 0.1 * time_vec))\n",
|
||
|
|
"\n",
|
||
|
|
"plt.figure(figsize=(8, 5))\n",
|
||
|
|
"plt.plot(time_vec, sig)"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"## Compute and plot the spectrogram\n",
|
||
|
|
"\n",
|
||
|
|
" The spectrum of the signal on consecutive time windows\n",
|
||
|
|
"\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 3,
|
||
|
|
"metadata": {
|
||
|
|
"collapsed": false,
|
||
|
|
"jupyter": {
|
||
|
|
"outputs_hidden": false
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"image/png": "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k+vYsmVLh2U//fTTxOvHl/vss886LJfpfWZ6LYD777+f0aNH8/DDD6fcHwwGc3wHInsetaRFekmmMAMSXbV1dXWJeRs2bOC1115LWe6BBx6gsrKSww8/HICTTz6Z999/n+rqaiZPntxhio+aPvHEEwG44447Oq3P7/fT2tqa8/uZOnUqpaWl3H///SnzP/74Y5599lmOP/54AA488EBqa2v505/+lLLcRx99xLp163J+Pcuy8Pl8KQFdX1+fcXS3yN5CLWmRXnLCCSew7777csopp3DQQQdh2zavvvoqP//5z6moqODSSy9NLFtXV8epp57KokWLGDZsGPfffz8rV67k5ptvpqysDIAFCxbwl7/8hWOPPZbLLruMQw45BNu2+eijj3j66adZuHAhU6ZM4ZhjjuE73/kON9xwA5999hknn3wyfr+fV155hbKyMi655BIAJk6cyEMPPcTDDz/MfvvtR0lJCRMnTsz6fgYMGMC1117Lf/zHf3DOOefwrW99i+3bt3P99ddTUlLCddddBziHl11//fVccMEFfPOb3+S8885j165dXH/99QwbNizn48NPPvlkHn30UebPn883v/lNNm/ezM9+9jOGDRvGu+++291/FpHi1tcj10T6i4cfftjMnTvXjBkzxlRUVBiv12tGjBhhvvOd75h///vfieVGjhxpvv71r5tHHnnEjB8/3vh8PjNq1CizbNmyDs+5e/duc80115gDDzzQ+Hw+EwgEzMSJE81ll11m6uvrE8tFo1Fz6623mgkTJiSWmzp1qvmv//qvxDIffvihmTVrlqmsrEwcwmRM++juP//5zxnf1913320OOeSQxPPOnj3bbNiwocNyd911lznggAOMz+czY8eONb/73e/M7NmzU0Zmx0d3Jx9qluymm24yo0aNMn6/3xx88MHmN7/5jbnuuutM+kcZYC666KKUedmeu6v3J9KXdMYxkSIzatQoJkyYwN/+9re+LqVH7dq1i7Fjx3Laaadx11139XU5IkVJ3d0i0uPq6+u58cYbmTFjBtXV1WzatIlbb72VpqamlG5+EUmlkBaRHuf3+/nwww+ZP38+O3bsoKysjK985SvceeedjB8/vq/LEyla6u4WEREpUjoES0REpEgppEVERIqUQlpERKRIaeAYzm/tfvrpp1RWVmY8HaGIiMgXZYyhqamJurq6nE/io5DGOc/w8OHD+7oMERHpBzZv3sy+++6b07IKaaCyshJwVlxVVVUfVyMiInujxsZGhg8fnsicXCikaf/FnaqqKoW0iIj0qHx2q2rgmIiISJFSSIuIiBQphbSIiEiRUkiLiIgUKYW0iIhIkVJIi4iIFCmFtIiISJFSSIuIiBQphbSIiEiRUkiLiIgUKYW0iIhIkVJIi4iIFCmFtIiISJHq05Beu3Ytp5xyCnV1dViWxWOPPZa4LxwOc9VVVzFx4kTKy8upq6vjnHPO4dNPP015jmAwyCWXXMLgwYMpLy/n1FNP5eOPP+7ldyIiIlJ4fRrSzc3NTJo0ieXLl3e4r6WlhZdffplrr72Wl19+mUcffZR33nmHU089NWW5BQsWsGLFCh566CGee+45du/ezcknn0w0Gu2ttyEiItIjLGOM6esiwPl9zRUrVnDaaadlXWb9+vV8+ctfZtOmTYwYMYKGhgaGDBn
|
||
|
|
"text/plain": [
|
||
|
|
"<Figure size 500x400 with 1 Axes>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "display_data"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"import scipy as sp\n",
|
||
|
|
"\n",
|
||
|
|
"freqs, times, spectrogram = sp.signal.spectrogram(sig)\n",
|
||
|
|
"\n",
|
||
|
|
"plt.figure(figsize=(5, 4))\n",
|
||
|
|
"plt.imshow(spectrogram, aspect=\"auto\", cmap=\"hot_r\", origin=\"lower\")\n",
|
||
|
|
"plt.title(\"Spectrogram\")\n",
|
||
|
|
"plt.ylabel(\"Frequency band\")\n",
|
||
|
|
"plt.xlabel(\"Time window\")\n",
|
||
|
|
"plt.tight_layout()"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"## Compute and plot the power spectral density (PSD)\n",
|
||
|
|
"\n",
|
||
|
|
" The power of the signal per frequency band\n",
|
||
|
|
"\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 4,
|
||
|
|
"metadata": {
|
||
|
|
"collapsed": false,
|
||
|
|
"jupyter": {
|
||
|
|
"outputs_hidden": false
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"image/png": "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
|
||
|
|
"text/plain": [
|
||
|
|
"<Figure size 500x400 with 1 Axes>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "display_data"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"freqs, psd = sp.signal.welch(sig)\n",
|
||
|
|
"\n",
|
||
|
|
"plt.figure(figsize=(5, 4))\n",
|
||
|
|
"plt.semilogx(freqs, psd)\n",
|
||
|
|
"plt.title(\"PSD: power spectral density\")\n",
|
||
|
|
"plt.xlabel(\"Frequency\")\n",
|
||
|
|
"plt.ylabel(\"Power\")\n",
|
||
|
|
"plt.tight_layout()"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 5,
|
||
|
|
"metadata": {
|
||
|
|
"collapsed": false,
|
||
|
|
"jupyter": {
|
||
|
|
"outputs_hidden": false
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"plt.show()"
|
||
|
|
]
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"metadata": {
|
||
|
|
"kernelspec": {
|
||
|
|
"display_name": "Python 3 (ipykernel)",
|
||
|
|
"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.12.11"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"nbformat": 4,
|
||
|
|
"nbformat_minor": 4
|
||
|
|
}
|