lasp/examples/Test SLM.ipynb

230 lines
16 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"%pylab is deprecated, use %matplotlib inline and import the required libraries.\n",
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"source": [
"from lasp import SLM\n",
"import numpy as np\n",
"%pylab inline"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2022-08-16 21:20:04+0200 \n",
"2022-08-16 21:20:04+0200 Enter fromBiquads (lasp_slm.cpp: 82)\n",
"2022-08-16 21:20:04+0200 | Enter createBandPass (lasp_slm.cpp: 62)\n",
"2022-08-16 21:20:04+0200 | | Enter SeriesBiquad (lasp_biquadbank.cpp: 12)\n",
"2022-08-16 21:20:04+0200 | | Leave SeriesBiquad (lasp_biquadbank.cpp)\n",
"2022-08-16 21:20:04+0200 | | \n",
"2022-08-16 21:20:04+0200 | | Enter SeriesBiquad (lasp_biquadbank.cpp: 12)\n",
"2022-08-16 21:20:04+0200 | | Leave SeriesBiquad (lasp_biquadbank.cpp)\n",
"2022-08-16 21:20:04+0200 | Leave createBandPass (lasp_slm.cpp)\n",
"2022-08-16 21:20:04+0200 | \n",
"2022-08-16 21:20:04+0200 | Enter SLM (lasp_slm.cpp: 37)\n",
"2022-08-16 21:20:04+0200 | Leave SLM (lasp_slm.cpp)\n",
"2022-08-16 21:20:04+0200 Leave fromBiquads (lasp_slm.cpp)\n"
]
}
],
"source": [
"fs = 44100.\n",
"Lref = 1\n",
"ds = 1\n",
"tau = 1/8\n",
"\n",
"bp_coefs = np.zeros((6,2), order='F')\n",
"bp_coefs[0,:] = 1\n",
"bp_coefs[3,:] = 1\n",
"\n",
"slm = SLM.fromBiquads(\n",
" fs, \n",
" Lref,\n",
" ds, tau, bp_coefs\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1., 1.],\n",
" [0., 0.],\n",
" [0., 0.],\n",
" [1., 1.],\n",
" [0., 0.],\n",
" [0., 0.]])"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bp_coefs"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(20100, 2)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2022-08-16 21:20:04+0200 \n",
"2022-08-16 21:20:04+0200 Enter run (lasp_slm.cpp: 151)\n",
"2022-08-16 21:20:04+0200 | Enter filter (lasp_biquadbank.cpp: 44)\n",
"2022-08-16 21:20:04+0200 | | Enter filter (lasp_biquadbank.cpp: 44)\n",
"2022-08-16 21:20:04+0200 | | Leave filter (lasp_biquadbank.cpp)\n",
"2022-08-16 21:20:04+0200 | Leave filter (lasp_biquadbank.cpp)\n",
"2022-08-16 21:20:04+0200 | N = 0ul\n",
"2022-08-16 21:20:04+0200 | N = 0ul\n",
"2022-08-16 21:20:04+0200 Leave run (lasp_slm.cpp)\n"
]
}
],
"source": [
"x = np.zeros(20100, dtype=float)\n",
"x[:] = 1\n",
"\n",
"res = slm.run(x)\n",
"print(res.shape)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f3823125cf0>,\n",
" <matplotlib.lines.Line2D at 0x7f3823125d50>]"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot(res)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1.],\n",
" [1.]])"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"slm.Pm"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([-0.11480531, -0.11480531])"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"res[-1,:]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}