Math-Matlab-Engine
view release on metacpan or search on metacpan
double
constant(sv,arg)
PREINIT:
STRLEN len;
INPUT:
SV * sv
char * s = SvPV(sv, len);
int arg
CODE:
RETVAL = constant(s,len,arg);
OUTPUT:
RETVAL
Engine *
new(CLASS)
char * CLASS
CODE:
{
Engine *ep;
if (!(ep = engOpen("\0"))) {
croak ("Can't start MATLAB engine");
}
RETVAL = ep;
}
OUTPUT:
RETVAL
int
engClose(ep)
Engine * ep
CODE:
{
RETVAL = 1 - engClose(ep);
}
OUTPUT:
RETVAL
int
engEvalString(ep, string)
Engine * ep
const char * string
CODE:
{
RETVAL = (engEvalString(ep, string) == 0);
}
OUTPUT:
RETVAL
AV *
engGetArrayList(ep, name)
Engine * ep
const char * name
PPCODE:
{
mxArray *matrix;
int nrdim, *dims, i, nelem;
double *vals;
matrix = engGetArray(ep, name);
if (matrix == NULL)
XSRETURN_UNDEF;
nrdim = mxGetNumberOfDimensions(matrix);
printf("%d dimensions\n",nrdim);
dims = mxGetDimensions(matrix);
nelem = 1;
for(i=0;i<nrdim;i++) {
printf("\t%d\n",*(dims+i));
nelem *= *(dims+i);
}
vals = mxGetPr(matrix);
for(i=0;i<nelem;i++) {
XPUSHs(sv_2mortal(newSVnv(*(vals+i))));
printf("%6.4f,",*(vals+i));
}
printf("\n");
}
SV *
engGetArrayListRef(ep, name)
Engine * ep
const char * name
CODE:
{
mxArray *matrix;
int nrdim, *dims, i, nelem;
double *vals;
AV *arr;
matrix = engGetArray(ep, name);
if (matrix == NULL)
XSRETURN_UNDEF;
nrdim = mxGetNumberOfDimensions(matrix);
printf("%d dimensions\n",nrdim);
dims = mxGetDimensions(matrix);
nelem = 1;
for(i=0;i<nrdim;i++) {
printf("\t%d\n",*(dims+i));
nelem *= *(dims+i);
}
vals = mxGetPr(matrix);
arr = newAV();
for(i=0;i<nelem;i++) {
av_push(arr, newSVnv(*(vals+i)));
printf("%6.4f,",*(vals+i));
}
printf("\n");
( run in 1.603 second using v1.01-cache-2.11-cpan-5511b514fd6 )