diff --git a/PythonWrapper/examples/cmsisdsp_tests.ipynb b/PythonWrapper/examples/cmsisdsp_tests.ipynb new file mode 100755 index 00000000..976acd39 --- /dev/null +++ b/PythonWrapper/examples/cmsisdsp_tests.ipynb @@ -0,0 +1,306 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "32645dea", + "metadata": {}, + "source": [ + "# CMSIS-DSP Python package example" + ] + }, + { + "cell_type": "markdown", + "id": "adbbe2cc", + "metadata": {}, + "source": [ + "## Installing and importing the needed packages" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "e684be27", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: cmsisdsp in c:\\benchresults\\pythonwrappertests\\testenv\\lib\\site-packages (1.2.1)\n", + "Requirement already satisfied: numpy>=1.19 in c:\\benchresults\\pythonwrappertests\\testenv\\lib\\site-packages (from cmsisdsp) (1.22.2)\n", + "Requirement already satisfied: jinja2>=3.0 in c:\\benchresults\\pythonwrappertests\\testenv\\lib\\site-packages (from cmsisdsp) (3.0.3)\n", + "Requirement already satisfied: networkx>=2.5 in c:\\benchresults\\pythonwrappertests\\testenv\\lib\\site-packages (from cmsisdsp) (2.6.3)\n", + "Requirement already satisfied: sympy>=1.6 in c:\\benchresults\\pythonwrappertests\\testenv\\lib\\site-packages (from cmsisdsp) (1.9)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in c:\\benchresults\\pythonwrappertests\\testenv\\lib\\site-packages (from jinja2>=3.0->cmsisdsp) (2.1.0)\n", + "Requirement already satisfied: mpmath>=0.19 in c:\\benchresults\\pythonwrappertests\\testenv\\lib\\site-packages (from sympy>=1.6->cmsisdsp) (1.2.1)\n" + ] + } + ], + "source": [ + "!pip install cmsisdsp" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "19c6b88c", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import cmsisdsp as dsp" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "13c4c9c5", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "id": "a5e787dc", + "metadata": {}, + "source": [ + "## Creating the signal" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "03a0c486", + "metadata": {}, + "outputs": [], + "source": [ + "nb = 512\n", + "f=100\n", + "signal = np.sin(2 * np.pi * np.arange(nb)*f / nb) + 0.1*np.random.randn(nb)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "24afdd5f", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(signal)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "79d91f10", + "metadata": {}, + "outputs": [], + "source": [ + "# Array of complex numbers as an array of real numbers\n", + "def imToReal1D(a):\n", + " ar=np.zeros(np.array(a.shape) * 2)\n", + " ar[0::2]=a.real\n", + " ar[1::2]=a.imag\n", + " return(ar)\n", + "\n", + "# Array of real numbers as an array of complex numbers\n", + "def realToIm1D(ar):\n", + " return(ar[0::2] + 1j * ar[1::2])" + ] + }, + { + "cell_type": "markdown", + "id": "8a959962", + "metadata": {}, + "source": [ + "## Using the F32 CMSIS-DSP FFT" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "54ecc9ae", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n" + ] + } + ], + "source": [ + "# CMSIS-DSP FFT F32 initialization\n", + "cfftf32=dsp.arm_cfft_instance_f32()\n", + "status=dsp.arm_cfft_init_f32(cfftf32,nb)\n", + "print(status)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "5a8d4c77", + "metadata": {}, + "outputs": [], + "source": [ + "# Re-evaluate this each time you change the signal\n", + "signalR = imToReal1D(signal)\n", + "resultR = dsp.arm_cfft_f32(cfftf32,signalR,0,1)\n", + "resultI = realToIm1D(resultR)\n", + "mag=20 * np.log10(np.abs(resultI))" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "d960c110", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(mag[1:nb//2])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "42eb3a5e", + "metadata": {}, + "source": [ + "## Using the Q15 CMSIS-DSP FFT" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "c2a9e191", + "metadata": {}, + "outputs": [], + "source": [ + "# Convert the signal to Q15 and viewed as a real array\n", + "import cmsisdsp.fixedpoint as f\n", + "signalR = imToReal1D(signal)\n", + "signalRQ15 = f.toQ15(signalR)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "8943c69c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n" + ] + } + ], + "source": [ + "# Initialize the Q15 CFFT\n", + "cfftq15 = dsp.arm_cfft_instance_q15()\n", + "status = dsp.arm_cfft_init_q15(cfftq15,nb)\n", + "print(status)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "21e39fca", + "metadata": {}, + "outputs": [], + "source": [ + "# Compute the Q15 CFFT and convert back to float and complex array\n", + "resultR = dsp.arm_cfft_q15(cfftq15,signalRQ15,0,1)\n", + "resultR = f.Q15toF32(resultR)\n", + "resultI = realToIm1D(resultR)*nb" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "8f0b3b80", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "mag = 20 * np.log10(np.abs(resultI))\n", + "plt.plot(mag[1:nb//2])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1aac0ecd", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.10.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}