CMSIS-DSP: Updated PythonWrapper

Added the new function abs max/min with no index.
pull/19/head
Christophe Favergeon 4 years ago
parent 02b12fd1cf
commit 0f0eaf7a5e

@ -16218,6 +16218,33 @@ cmsis_arm_min_q7(PyObject *obj, PyObject *args)
return(NULL);
}
static PyObject *
cmsis_arm_min_no_idx_q7(PyObject *obj, PyObject *args)
{
PyObject *pSrc=NULL; // input
q7_t *pSrc_converted=NULL; // input
uint32_t blockSize; // input
q7_t pResult;
if (PyArg_ParseTuple(args,"O",&pSrc))
{
GETARGUMENT(pSrc,NPY_BYTE,int8_t,q7_t);
blockSize = arraySizepSrc ;
arm_min_no_idx_q7(pSrc_converted,blockSize,&pResult);
PyObject* pResultOBJ=Py_BuildValue("i",pResult);
FREEARGUMENT(pSrc_converted);
return(pResultOBJ);
}
return(NULL);
}
static PyObject *
cmsis_arm_absmin_q7(PyObject *obj, PyObject *args)
{
@ -16254,6 +16281,35 @@ cmsis_arm_absmin_q7(PyObject *obj, PyObject *args)
return(NULL);
}
static PyObject *
cmsis_arm_absmin_no_idx_q7(PyObject *obj, PyObject *args)
{
PyObject *pSrc=NULL; // input
q7_t *pSrc_converted=NULL; // input
uint32_t blockSize; // input
q7_t pResult; // output
if (PyArg_ParseTuple(args,"O",&pSrc))
{
GETARGUMENT(pSrc,NPY_BYTE,int8_t,q7_t);
blockSize = arraySizepSrc ;
arm_absmin_no_idx_q7(pSrc_converted,blockSize,&pResult);
PyObject* pResultOBJ=Py_BuildValue("i",pResult);
FREEARGUMENT(pSrc_converted);
return(pResultOBJ);
}
return(NULL);
}
static PyObject *
cmsis_arm_min_q15(PyObject *obj, PyObject *args)
@ -16292,6 +16348,36 @@ cmsis_arm_min_q15(PyObject *obj, PyObject *args)
return(NULL);
}
static PyObject *
cmsis_arm_min_no_idx_q15(PyObject *obj, PyObject *args)
{
PyObject *pSrc=NULL; // input
q15_t *pSrc_converted=NULL; // input
uint32_t blockSize; // input
q15_t pResult; // output
if (PyArg_ParseTuple(args,"O",&pSrc))
{
GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);
blockSize = arraySizepSrc ;
arm_min_no_idx_q15(pSrc_converted,blockSize,&pResult);
PyObject* pResultOBJ=Py_BuildValue("h",pResult);
FREEARGUMENT(pSrc_converted);
return(pResultOBJ);
}
return(NULL);
}
static PyObject *
cmsis_arm_absmin_q15(PyObject *obj, PyObject *args)
{
@ -16329,6 +16415,36 @@ cmsis_arm_absmin_q15(PyObject *obj, PyObject *args)
return(NULL);
}
static PyObject *
cmsis_arm_absmin_no_idx_q15(PyObject *obj, PyObject *args)
{
PyObject *pSrc=NULL; // input
q15_t *pSrc_converted=NULL; // input
uint32_t blockSize; // input
q15_t pResult; // output
if (PyArg_ParseTuple(args,"O",&pSrc))
{
GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);
blockSize = arraySizepSrc ;
arm_absmin_no_idx_q15(pSrc_converted,blockSize,&pResult);
PyObject* pResultOBJ=Py_BuildValue("h",pResult);
FREEARGUMENT(pSrc_converted);
return(pResultOBJ);
}
return(NULL);
}
static PyObject *
cmsis_arm_min_q31(PyObject *obj, PyObject *args)
@ -16367,6 +16483,36 @@ cmsis_arm_min_q31(PyObject *obj, PyObject *args)
return(NULL);
}
static PyObject *
cmsis_arm_min_no_idx_q31(PyObject *obj, PyObject *args)
{
PyObject *pSrc=NULL; // input
q31_t *pSrc_converted=NULL; // input
uint32_t blockSize; // input
q31_t pResult; // output
if (PyArg_ParseTuple(args,"O",&pSrc))
{
GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);
blockSize = arraySizepSrc ;
arm_min_no_idx_q31(pSrc_converted,blockSize,&pResult);
PyObject* pResultOBJ=Py_BuildValue("i",pResult);
FREEARGUMENT(pSrc_converted);
return(pResultOBJ);
}
return(NULL);
}
static PyObject *
cmsis_arm_absmin_q31(PyObject *obj, PyObject *args)
{
@ -16404,6 +16550,35 @@ cmsis_arm_absmin_q31(PyObject *obj, PyObject *args)
return(NULL);
}
static PyObject *
cmsis_arm_absmin_no_idx_q31(PyObject *obj, PyObject *args)
{
PyObject *pSrc=NULL; // input
q31_t *pSrc_converted=NULL; // input
uint32_t blockSize; // input
q31_t pResult; // output
if (PyArg_ParseTuple(args,"O",&pSrc))
{
GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);
blockSize = arraySizepSrc ;
arm_absmin_no_idx_q31(pSrc_converted,blockSize,&pResult);
PyObject* pResultOBJ=Py_BuildValue("i",pResult);
FREEARGUMENT(pSrc_converted);
return(pResultOBJ);
}
return(NULL);
}
static PyObject *
cmsis_arm_min_f32(PyObject *obj, PyObject *args)
@ -16517,6 +16692,36 @@ cmsis_arm_max_q7(PyObject *obj, PyObject *args)
return(NULL);
}
static PyObject *
cmsis_arm_max_no_idx_q7(PyObject *obj, PyObject *args)
{
PyObject *pSrc=NULL; // input
q7_t *pSrc_converted=NULL; // input
uint32_t blockSize; // input
q7_t pResult; // output
if (PyArg_ParseTuple(args,"O",&pSrc))
{
GETARGUMENT(pSrc,NPY_BYTE,int8_t,q7_t);
blockSize = arraySizepSrc ;
arm_max_no_idx_q7(pSrc_converted,blockSize,&pResult);
PyObject* pResultOBJ=Py_BuildValue("i",pResult);
FREEARGUMENT(pSrc_converted);
return(pResultOBJ);
}
return(NULL);
}
static PyObject *
cmsis_arm_absmax_q7(PyObject *obj, PyObject *args)
{
@ -16554,6 +16759,36 @@ cmsis_arm_absmax_q7(PyObject *obj, PyObject *args)
return(NULL);
}
static PyObject *
cmsis_arm_absmax_no_idx_q7(PyObject *obj, PyObject *args)
{
PyObject *pSrc=NULL; // input
q7_t *pSrc_converted=NULL; // input
uint32_t blockSize; // input
q7_t pResult; // output
if (PyArg_ParseTuple(args,"O",&pSrc))
{
GETARGUMENT(pSrc,NPY_BYTE,int8_t,q7_t);
blockSize = arraySizepSrc ;
arm_absmax_no_idx_q7(pSrc_converted,blockSize,&pResult);
PyObject* pResultOBJ=Py_BuildValue("i",pResult);
FREEARGUMENT(pSrc_converted);
return(pResultOBJ);
}
return(NULL);
}
static PyObject *
cmsis_arm_max_q15(PyObject *obj, PyObject *args)
@ -16592,6 +16827,36 @@ cmsis_arm_max_q15(PyObject *obj, PyObject *args)
return(NULL);
}
static PyObject *
cmsis_arm_max_no_idx_q15(PyObject *obj, PyObject *args)
{
PyObject *pSrc=NULL; // input
q15_t *pSrc_converted=NULL; // input
uint32_t blockSize; // input
q15_t pResult; // output
if (PyArg_ParseTuple(args,"O",&pSrc))
{
GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);
blockSize = arraySizepSrc ;
arm_max_no_idx_q15(pSrc_converted,blockSize,&pResult);
PyObject* pResultOBJ=Py_BuildValue("h",pResult);
FREEARGUMENT(pSrc_converted);
return(pResultOBJ);
}
return(NULL);
}
static PyObject *
cmsis_arm_absmax_q15(PyObject *obj, PyObject *args)
{
@ -16629,6 +16894,35 @@ cmsis_arm_absmax_q15(PyObject *obj, PyObject *args)
return(NULL);
}
static PyObject *
cmsis_arm_absmax_no_idx_q15(PyObject *obj, PyObject *args)
{
PyObject *pSrc=NULL; // input
q15_t *pSrc_converted=NULL; // input
uint32_t blockSize; // input
q15_t pResult; // output
if (PyArg_ParseTuple(args,"O",&pSrc))
{
GETARGUMENT(pSrc,NPY_INT16,int16_t,int16_t);
blockSize = arraySizepSrc ;
arm_absmax_no_idx_q15(pSrc_converted,blockSize,&pResult);
PyObject* pResultOBJ=Py_BuildValue("h",pResult);
FREEARGUMENT(pSrc_converted);
return(pResultOBJ);
}
return(NULL);
}
static PyObject *
cmsis_arm_max_q31(PyObject *obj, PyObject *args)
@ -16667,6 +16961,36 @@ cmsis_arm_max_q31(PyObject *obj, PyObject *args)
return(NULL);
}
static PyObject *
cmsis_arm_max_no_idx_q31(PyObject *obj, PyObject *args)
{
PyObject *pSrc=NULL; // input
q31_t *pSrc_converted=NULL; // input
uint32_t blockSize; // input
q31_t pResult; // output
if (PyArg_ParseTuple(args,"O",&pSrc))
{
GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);
blockSize = arraySizepSrc ;
arm_max_no_idx_q31(pSrc_converted,blockSize,&pResult);
PyObject* pResultOBJ=Py_BuildValue("i",pResult);
FREEARGUMENT(pSrc_converted);
return(pResultOBJ);
}
return(NULL);
}
static PyObject *
cmsis_arm_absmax_q31(PyObject *obj, PyObject *args)
{
@ -16704,6 +17028,35 @@ cmsis_arm_absmax_q31(PyObject *obj, PyObject *args)
return(NULL);
}
static PyObject *
cmsis_arm_absmax_no_idx_q31(PyObject *obj, PyObject *args)
{
PyObject *pSrc=NULL; // input
q31_t *pSrc_converted=NULL; // input
uint32_t blockSize; // input
q31_t pResult; // output
if (PyArg_ParseTuple(args,"O",&pSrc))
{
GETARGUMENT(pSrc,NPY_INT32,int32_t,int32_t);
blockSize = arraySizepSrc ;
arm_absmax_no_idx_q31(pSrc_converted,blockSize,&pResult);
PyObject* pResultOBJ=Py_BuildValue("i",pResult);
FREEARGUMENT(pSrc_converted);
return(pResultOBJ);
}
return(NULL);
}
static PyObject *
cmsis_arm_max_f32(PyObject *obj, PyObject *args)
@ -17876,12 +18229,18 @@ static PyMethodDef CMSISMLMethods[] = {
{"arm_cmplx_mult_real_q31", cmsis_arm_cmplx_mult_real_q31, METH_VARARGS,""},
{"arm_cmplx_mult_real_f32", cmsis_arm_cmplx_mult_real_f32, METH_VARARGS,""},
{"arm_min_q7", cmsis_arm_min_q7, METH_VARARGS,""},
{"arm_min_no_idx_q7", cmsis_arm_min_no_idx_q7, METH_VARARGS,""},
{"arm_min_no_idx_q15", cmsis_arm_min_no_idx_q15, METH_VARARGS,""},
{"arm_min_no_idx_q31", cmsis_arm_min_no_idx_q31, METH_VARARGS,""},
{"arm_min_q15", cmsis_arm_min_q15, METH_VARARGS,""},
{"arm_min_q31", cmsis_arm_min_q31, METH_VARARGS,""},
{"arm_min_f32", cmsis_arm_min_f32, METH_VARARGS,""},
{"arm_absmin_q7", cmsis_arm_absmin_q7, METH_VARARGS,""},
{"arm_absmin_q15", cmsis_arm_absmin_q15, METH_VARARGS,""},
{"arm_absmin_q31", cmsis_arm_absmin_q31, METH_VARARGS,""},
{"arm_absmin_no_idx_q7", cmsis_arm_absmin_no_idx_q7, METH_VARARGS,""},
{"arm_absmin_no_idx_q15", cmsis_arm_absmin_no_idx_q15, METH_VARARGS,""},
{"arm_absmin_no_idx_q31", cmsis_arm_absmin_no_idx_q31, METH_VARARGS,""},
{"arm_absmin_f32", cmsis_arm_absmin_f32, METH_VARARGS,""},
{"arm_max_q7", cmsis_arm_max_q7, METH_VARARGS,""},
{"arm_max_q15", cmsis_arm_max_q15, METH_VARARGS,""},
@ -17891,6 +18250,12 @@ static PyMethodDef CMSISMLMethods[] = {
{"arm_absmax_q31", cmsis_arm_absmax_q31, METH_VARARGS,""},
{"arm_max_f32", cmsis_arm_max_f32, METH_VARARGS,""},
{"arm_absmax_f32", cmsis_arm_absmax_f32, METH_VARARGS,""},
{"arm_max_no_idx_q7", cmsis_arm_max_no_idx_q7, METH_VARARGS,""},
{"arm_max_no_idx_q15", cmsis_arm_max_no_idx_q15, METH_VARARGS,""},
{"arm_max_no_idx_q31", cmsis_arm_max_no_idx_q31, METH_VARARGS,""},
{"arm_absmax_no_idx_q7", cmsis_arm_absmax_no_idx_q7, METH_VARARGS,""},
{"arm_absmax_no_idx_q15", cmsis_arm_absmax_no_idx_q15, METH_VARARGS,""},
{"arm_absmax_no_idx_q31", cmsis_arm_absmax_no_idx_q31, METH_VARARGS,""},
{"arm_cmplx_mult_cmplx_q15", cmsis_arm_cmplx_mult_cmplx_q15, METH_VARARGS,""},
{"arm_cmplx_mult_cmplx_q31", cmsis_arm_cmplx_mult_cmplx_q31, METH_VARARGS,""},
{"arm_cmplx_mult_cmplx_f32", cmsis_arm_cmplx_mult_cmplx_f32, METH_VARARGS,""},

@ -57,8 +57,8 @@ a31 = f.toQ31(a)
i=dsp.arm_absmax_q31(a31)
print(f.Q31toF32(i[0]),i[1])
a8 = f.toQ15(a)
i=dsp.arm_absmax_q15(a8)
a15 = f.toQ15(a)
i=dsp.arm_absmax_q15(a15)
print(f.Q15toF32(i[0]),i[1])
a7 = f.toQ7(a)

@ -0,0 +1,71 @@
import cmsisdsp as dsp
import numpy as np
from scipy import signal
from scipy.fftpack import dct
import cmsisdsp.fixedpoint as f
from pyquaternion import Quaternion
import colorama
from colorama import init,Fore, Back, Style
import statsmodels.tsa.stattools
import scipy.spatial
init()
def printTitle(s):
print("\n" + Fore.GREEN + Style.BRIGHT + s + Style.RESET_ALL)
def printSubTitle(s):
print("\n" + Style.BRIGHT + s + Style.RESET_ALL)
printTitle("Max and AbsMax")
a=np.array([1.,-3.,4.,0.,-10.,8.])
i=dsp.arm_absmax_f32(a)
printSubTitle("Fixed point tests")
# Normalize for fixed point tests
a = a / i[0]
a7 = f.toQ7(a)
a15 = f.toQ15(a)
a31 = f.toQ31(a)
print(a31)
print(dsp.arm_absmax_no_idx_q31(a31))
print(dsp.arm_max_no_idx_q31(a31))
print(a15)
print(dsp.arm_absmax_no_idx_q15(a15))
print(dsp.arm_max_no_idx_q15(a15))
print(a7)
print(dsp.arm_absmax_no_idx_q7(a7))
print(dsp.arm_max_no_idx_q7(a7))
printTitle("Min and AbsMin")
a=np.array([1.,-3.,4.,0.5,-10.,8.])
i=dsp.arm_absmax_f32(a)
printSubTitle("Fixed point tests")
# Normalize for fixed point tests
a = a / i[0]
a7 = f.toQ7(a)
a15 = f.toQ15(a)
a31 = f.toQ31(a)
print(a31)
print(dsp.arm_absmin_no_idx_q31(a31))
print(dsp.arm_min_no_idx_q31(a31))
print(a15)
print(dsp.arm_absmin_no_idx_q15(a15))
print(dsp.arm_min_no_idx_q15(a15))
print(a7)
print(dsp.arm_absmin_no_idx_q7(a7))
print(dsp.arm_min_no_idx_q7(a7))
Loading…
Cancel
Save