📄 matrix.h
字号:
);
/*
* Set row dimension
*/
extern void mxSetM(
mxArray *pa, /* pointer to array */
int m /* row dimension */
);
/*
* Get column dimension
*/
extern int mxGetN(
const mxArray *pa /* pointer to array */
);
/*
* Is array empty
*/
extern bool mxIsEmpty(
const mxArray *pa /* pointer to array */
);
/*
* Get row data pointer for sparse numeric array
*/
extern int *mxGetIr(
const mxArray *pa /* pointer to array */
);
/*
* Set row data pointer for numeric array
*/
extern void mxSetIr(
mxArray *pa, /* pointer to array */
int *newir /* row data array pointer */
);
/*
* Get column data pointer for sparse numeric array
*/
extern int *mxGetJc(
const mxArray *pa /* pointer to array */
);
/*
* Set column data pointer for numeric array
*/
extern void mxSetJc(
mxArray *pa, /* pointer to array */
int *newjc /* column data array pointer */
);
/*
* Get maximum nonzero elements for sparse numeric array
*/
extern int mxGetNzmax(
const mxArray *pa /* pointer to array */
);
/*
* Set maximum nonzero elements for numeric array
*/
extern void mxSetNzmax(
mxArray *pa, /* pointer to array */
int nzmax /* maximum nonzero elements */
);
/*
* Get number of elements in array
*/
extern int mxGetNumberOfElements(
const mxArray *pa /* pointer to array */
);
/*
* Get array data element size
*/
extern int mxGetElementSize(const mxArray *pa);
/*
* Return the offset (in number of elements) from the beginning of
* the array to a given subscript.
*/
extern int mxCalcSingleSubscript(const mxArray *pa, int nsubs, const int *subs);
/*
* Get number of structure fields in array
*/
extern int mxGetNumberOfFields(
const mxArray *pa /* pointer to array */
);
/*
* Get a pointer to the specified cell element.
*/
extern mxArray *mxGetCell(const mxArray *pa, int i);
/*
* Set an element in a cell array to the specified value.
*/
extern void mxSetCell(mxArray *pa, int i, mxArray *value);
/*
* Get the index to the named field.
*/
extern int mxGetFieldNumber(const mxArray *pa, const char *name);
/*
* Return a pointer to the contents of the named field for
* the ith element (zero based).
*/
extern mxArray *mxGetFieldByNumber(const mxArray *pa, int i, int fieldnum);
/*
* Set pa[i][fieldnum] = value
*/
extern void mxSetFieldByNumber(mxArray *pa, int i, int fieldnum, mxArray *value);
/*
* Return a pointer to the contents of the named field for the ith
* element (zero based). Returns NULL on no such field or if the
* field itself is NULL
*/
extern mxArray *mxGetField(const mxArray *pa, int i, const char *fieldname);
/*
* Set pa[i]->fieldname = value
*/
extern void mxSetField(mxArray *pa, int i, const char *fieldname, mxArray *value);
/*
* Return pointer to the nth field name
*/
extern const char *mxGetFieldNameByNumber(const mxArray *pa, int n);
/*
* Return the name of an array's class.
*/
extern const char *mxGetClassName(const mxArray *pa);
/*
* Determine whether an array is a member of the specified class.
*/
extern bool mxIsClass(const mxArray *pa, const char *name);
#include <stdlib.h>
/*
* Create a numeric matrix and initialize all its data elements to 0.
*/
extern mxArray *mxCreateNumericMatrix(
int m,
int n,
mxClassID classid,
int cmplx_flag
);
/*
* Set column dimension
*/
extern void mxSetN(mxArray *pa, int n);
/*
* Set dimension array and number of dimensions. Returns 0 on success and 1
* if there was not enough memory available to reallocate the dimensions array.
*/
extern int mxSetDimensions(mxArray *pa, const int *size, int ndims);
/*
* mxArray destructor
*/
extern void mxDestroyArray(mxArray *pa);
/*
* Create a numeric array and initialize all its data elements to 0.
*/
extern mxArray *mxCreateNumericArray(int ndim, const int *dims, mxClassID classid, mxComplexity flag);
/*
* Create a two-dimensional array to hold double-precision
* floating-point data; initialize each data element to 0.
*/
extern mxArray *mxCreateDoubleMatrix(int m, int n, mxComplexity flag);
/*
* Create a scalar double-precision array initialized to the
* value specified
*/
extern mxArray *mxCreateScalarDouble(double value);
/*
* Create a 2-Dimensional sparse array.
*/
extern mxArray *mxCreateSparse(int m, int n, int nzmax, mxComplexity flag);
/*
* Copies characters from a MATLAB array to a char array
* nChars is the number of bytes in the output buffer
*/
extern void mxGetNChars(const mxArray *pa, char *buf, int nChars);
/*
* Converts a string array to a C-style string.
*/
extern int mxGetString(const mxArray *pa, char *buf, int buflen);
/*
* Create a NULL terminated C string from an mxArray of type mxCHAR_CLASS
* Supports multibyte character sets. The resulting string must be freed
* with mxFree. Returns NULL on out of memory or non-character arrays.
*/
extern char *mxArrayToString(const mxArray *pa);
/*
* Create a 1-by-n string array initialized to str.
*/
extern mxArray *mxCreateStringFromNChars(const char *str, int n);
/*
* Create a 1-by-n string array initialized to null terminated string
* where n is the length of the string.
*/
extern mxArray *mxCreateString(const char *str);
/*
* Create an N-Dimensional array to hold string data;
* initialize all elements to 0.
*/
extern mxArray *mxCreateCharArray(int ndim, const int *dims);
/*
* Create a string array initialized to the strings in str.
*/
extern mxArray *mxCreateCharMatrixFromStrings(int m, const char **str);
/*
* Create a 2-Dimensional cell array, with each cell initialized
* to NULL.
*/
extern mxArray *mxCreateCellMatrix(int m, int n);
/*
* Create an N-Dimensional cell array, with each cell initialized
* to NULL.
*/
extern mxArray *mxCreateCellArray(int ndim, const int *dims);
/*
* Create a 2-Dimensional structure array having the specified fields;
* initialize all values to NULL.
*/
extern mxArray *mxCreateStructMatrix(int m, int n, int nfields, const char **fieldnames);
/*
* Create an N-Dimensional structure array having the specified fields;
* initialize all values to NULL.
*/
extern mxArray *mxCreateStructArray(int ndim, const int *dims, int nfields,
const char **fieldnames);
/*
* Make a deep copy of an array, return a pointer to the copy.
*/
extern mxArray *mxDuplicateArray(const mxArray *in);
/*
* Set classname of an unvalidated object array. It is illegal to
* call this function on a previously validated object array.
* Return 0 for success, 1 for failure.
*/
extern int mxSetClassName(mxArray *pa, const char *classname);
/*
* Add a field to a structure array. Returns field number on success or -1
* if inputs are invalid or an out of memory condition occurs.
*/
extern int mxAddField(mxArray *pa, const char *fieldname);
/*
* Remove a field from a structure array. Does nothing if no such field exists.
* Does not destroy the field itself.
*/
extern void mxRemoveField(mxArray *pa, int field);
/*
* Set an element in a cell array to a copy of the specified value.
*/
extern void mxSetCopyInCell(mxArray *pa, int i, mxArray *value);
#include <stdlib.h>
#include <stdlib.h>
#ifdef __WATCOMC__
#ifndef __cplusplus
#pragma aux mxGetEps value [8087];
#pragma aux mxGetInf value [8087];
#pragma aux mxGetNaN value [8087];
#endif
#endif
/*
* Function for obtaining MATLAB's concept of EPS
*/
extern double mxGetEps(void);
/*
* Function for obtaining MATLAB's concept of INF (Used in MEX-File callback).
*/
extern double mxGetInf(void);
/*
* Function for obtaining MATLAB's concept of NaN (Used in MEX-File callback).
*/
extern double mxGetNaN(void);
/*
* test for finiteness in a machine-independent manner
*/
extern bool mxIsFinite(
double x /* value to test */
);
/*
* test for infinity in a machine-independent manner
*/
extern bool mxIsInf(
double x /* value to test */
);
/*
* test for NaN in a machine-independent manner
*/
extern bool mxIsNaN(
double x /* value to test */
);
typedef void * (*calloc_proc)(size_t nmemb, size_t size);
typedef void (*free_proc)(void *ptr);
typedef void * (*malloc_proc)(size_t size);
typedef void * (*realloc_proc)(void *ptr, size_t size);
#if !defined(MATLAB_MEX_FILE)
/*
* Set the memory allocation functions used by the matrix library. You must
* supply calloc, realloc, free and malloc functions when using mxSetAllocFcns.
* NOTE: the free function MUST handle the case when the pointer to be freed
* is NULL. The default AllocFcns for the matrix library are based on the
* standard C library functions calloc, free, realloc, and malloc.
*/
extern void mxSetAllocFcns(
calloc_proc callocfcn,
free_proc freefcn,
realloc_proc reallocfcn,
malloc_proc mallocfcn
);
#endif
#if defined(V4_COMPAT)
#define Matrix mxArray
#define COMPLEX mxCOMPLEX
#define REAL mxREAL
typedef double Real;
#define mxCreateFull mxCreateDoubleMatrix
#define mxIsString mxIsChar
#define mxFreeMatrix mxDestroyArray
#define mxIsFull(pa) (!mxIsSparse(pa))
#else
#define mxIsFull() mxIsFull_is_obsolete
#define mxCreateFull() mxCreateFull_is_obsolete
#define mxIsString() mxIsString_is_obsolete
#define mxFreeMatrix() mxFreeMatrix_is_obsolete
#endif /* V4_COMPAT */
#include <stdlib.h>
#include <stdlib.h>
#include <stdlib.h>
/* $Revision: 1.10 $ */
#ifdef ARGCHECK
#include "mwdebug.h" /* Prototype _d versions of API functions */
#define mxCalcSingleSubscript(pa, nsubs, subs) mxCalcSingleSubscript_d(pa, nsubs, subs, __FILE__, __LINE__)
#define mxCalloc(nelems, size) mxCalloc_d(nelems, size, __FILE__, __LINE__)
#define mxClearLogical(pa) mxClearLogical_d(pa, __FILE__, __LINE__)
#define mxCreateCellArray(ndim, dims) mxCreateCellArray_d(ndim, dims, __FILE__, __LINE__)
#define mxCreateCellMatrix(m, n) mxCreateCellMatrix_d(m, n, __FILE__, __LINE__)
#define mxCreateCharArray(ndim, dims) mxCreateCharArray_d(ndim, dims, __FILE__, __LINE__)
#define mxCreateCharMatrixFromStrings(m, strings) mxCreateCharMatrixFromStrings_d(m, strings, __FILE__, __LINE__)
#define mxCreateDoubleMatrix(m, n, cplxflag) mxCreateDoubleMatrix_d(m, n, cplxflag, __FILE__, __LINE__)
#define mxCreateNumericArray(ndim, dims, classname, cplxflag) mxCreateNumericArray_d(ndim, dims, classname, cplxflag, __FILE__, __LINE__)
#define mxCreateSparse(m, n, nzmax, cplxflag) mxCreateSparse_d(m, n, nzmax, cplxflag, __FILE__, __LINE__)
#define mxCreateString(string) mxCreateString_d(string, __FILE__, __LINE__)
#define mxCreateStructArray(ndim, dims, nfields, fieldnames) mxCreateStructArray_d(ndim, dims, nfields, fieldnames, __FILE__, __LINE__)
#define mxCreateStructMatrix(m, n, nfields, fieldnames) mxCreateStructMatrix_d(m, n, nfields, fieldnames, __FILE__, __LINE__)
#define mxDestroyArray(pa) mxDestroyArray_d(pa, __FILE__, __LINE__)
#define mxDuplicateArray(pa) mxDuplicateArray_d(pa, __FILE__, __LINE__)
#define mxFree(pm) mxFree_d(pm, __FILE__, __LINE__)
#define mxGetCell(pa, index) mxGetCell_d(pa, index, __FILE__, __LINE__)
#define mxGetClassID(pa) mxGetClassID_d(pa, __FILE__, __LINE__)
#define mxGetClassName(pa) mxGetClassName_d(pa, __FILE__, __LINE__)
#define mxGetData(pa) mxGetData_d(pa, __FILE__, __LINE__)
#define mxGetDimensions(pa) mxGetDimensions_d(pa, __FILE__, __LINE__)
#define mxGetElementSize(pa) mxGetElementSize_d(pa, __FILE__, __LINE__)
#define mxGetField(pa, index, fieldname) mxGetField_d(pa, index, fieldname, __FILE__, __LINE__)
#define mxGetFieldByNumber(pa, index, fieldnum) mxGetFieldByNumber_d(pa, index, fieldnum, __FILE__, __LINE__)
#define mxGetFieldNameByNumber(pa, fieldnum) mxGetFieldNameByNumber_d(pa, fieldnum, __FILE__, __LINE__)
#define mxGetFieldNumber(pa, fieldname) mxGetFieldNumber_d(pa, fieldname, __FILE__, __LINE__)
#define mxGetImagData(pa) mxGetImagData_d(pa, __FILE__, __LINE__)
#define mxGetIr(pa) mxGetIr_d(pa, __FILE__, __LINE__)
#define mxGetJc(pa) mxGetJc_d(pa, __FILE__, __LINE__)
#define mxGetName(pa) mxGetName_d(pa, __FILE__, __LINE__)
#define mxGetNumberOfDimensions(pa) mxGetNumberOfDimensions_d(pa, __FILE__, __LINE__)
#define mxGetNumberOfElements(pa) mxGetNumberOfElements_d(pa, __FILE__, __LINE__)
#define mxGetNumberOfFields(pa) mxGetNumberOfFields_d(pa, __FILE__, __LINE__)
#define mxGetNzmax(pa) mxGetNzmax_d(pa, __FILE__, __LINE__)
#define mxGetM(pa) mxGetM_d(pa, __FILE__, __LINE__)
#define mxGetN(pa) mxGetN_d(pa, __FILE__, __LINE__)
#define mxGetPi(pa) mxGetPi_d(pa, __FILE__, __LINE__)
#define mxGetPr(pa) mxGetPr_d(pa, __FILE__, __LINE__)
#define mxGetScalar(pa) mxGetScalar_d(pa, __FILE__, __LINE__)
#define mxGetString(pa, buffer, buflen) mxGetString_d(pa, buffer, buflen, __FILE__, __LINE__)
#define mxIsCell(pa) mxIsCell_d(pa, __FILE__, __LINE__)
#define mxIsChar(pa) mxIsChar_d(pa, __FILE__, __LINE__)
#define mxIsClass(pa, classname) mxIsClass_d(pa, classname, __FILE__, __LINE__)
#define mxIsComplex(pa) mxIsComplex_d(pa, __FILE__, __LINE__)
#define mxIsDouble(pa) mxIsDouble_d(pa, __FILE__, __LINE__)
#define mxIsEmpty(pa) mxIsEmpty_d(pa, __FILE__, __LINE__)
#define mxIsFromGlobalWS(pa) mxIsFromGlobalWS_d(pa, __FILE__, __LINE__)
#define mxIsInt8(pa) mxIsInt8_d(pa, __FILE__, __LINE__)
#define mxIsInt16(pa) mxIsInt16_d(pa, __FILE__, __LINE__)
#define mxIsInt32(pa) mxIsInt32_d(pa, __FILE__, __LINE__)
#define mxIsLogical(pa) mxIsLogical_d(pa, __FILE__, __LINE__)
#define mxIsNumeric(pa) mxIsNumeric_d(pa, __FILE__, __LINE__)
#define mxIsSingle(pa) mxIsSingle_d(pa, __FILE__, __LINE__)
#define mxIsSparse(pa) mxIsSparse_d(pa, __FILE__, __LINE__)
#define mxIsStruct(pa) mxIsStruct_d(pa, __FILE__, __LINE__)
#define mxIsUint8(pa) mxIsUint8_d(pa, __FILE__, __LINE__)
#define mxIsUint16(pa) mxIsUint16_d(pa, __FILE__, __LINE__)
#define mxIsUint32(pa) mxIsUint32_d(pa, __FILE__, __LINE__)
#define mxRealloc(pm, nelems) mxRealloc_d(pm, nelems, __FILE__, __LINE__)
#if !defined(MATLAB_MEX_FILE)
#define mxSetAllocFcns(callocptr, freeptr, reallocptr, mallocptr) mxSetAllocFcns_d(callocptr, freeptr, reallocptr, freeptr, __FILE__, __LINE__)
#endif /* MATLAB_MEX_FILE */
#define mxSetCell(pa, index, value) mxSetCell_d(pa, index, value, __FILE__, __LINE__)
#define mxSetClassName(pa, name) mxSetClassName_d(pa, name, __FILE__, __LINE__)
#define mxSetData(pa, pd) mxSetData_d(pa, pd, __FILE__, __LINE__)
#define mxSetDimensions(pa, size, ndims) mxSetDimensions_d(pa, size, ndims, __FILE__, __LINE__)
#define mxSetField(pa, index, fieldname, value) mxSetField_d(pa, index, fieldname, value, __FILE__, __LINE__)
#define mxSetFieldByNumber(pa, index, fieldnum, value) mxSetFieldByNumber_d(pa, index, fieldnum, value, __FILE__, __LINE__)
#define mxSetImagData(pa, pid) mxSetImagData_d(pa, pid, __FILE__, __LINE__)
#define mxSetIr(pa, ir) mxSetIr_d(pa, ir, __FILE__, __LINE__)
#define mxSetJc(pa, jc) mxSetJc_d(pa, jc, __FILE__, __LINE__)
#define mxSetLogical(pa) mxSetLogical_d(pa, __FILE__, __LINE__)
#define mxSetM(pa, m) mxSetM_d(pa, m, __FILE__, __LINE__)
#define mxSetN(pa, n) mxSetN_d(pa, n, __FILE__, __LINE__)
#define mxSetName(pa, name) mxSetName_d(pa, name, __FILE__, __LINE__)
#define mxSetNzmax(pa, nzmax) mxSetNzmax_d(pa, nzmax, __FILE__, __LINE__)
#define mxSetPi(pa, pi) mxSetPi_d(pa, pi, __FILE__, __LINE__)
#define mxSetPr(pa, pr) mxSetPr_d(pa, pr, __FILE__, __LINE__)
#endif
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* matrix_h */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -