律师网站建设哪家专业,长尾关键词挖掘工具爱网站,北京网站建设公司收购,宜兴埠网站建设引子在外部编程语言与matlab的交互中#xff0c;Array是最单元的交互元素#xff0c;怎么都绕不过去。在matlab提供的Array接口有两个#xff0c;一个是C的MxArray, 另一个是Cpp(C)的MwArray.看下两着的分别介绍#xff1a;mxArray#xff1a;Matlab C 函数库的结构体mwAr…引子在外部编程语言与matlab的交互中Array是最单元的交互元素怎么都绕不过去。在matlab提供的Array接口有两个一个是C的MxArray, 另一个是Cpp(C)的MwArray.看下两着的分别介绍mxArrayMatlab C 函数库的结构体mwArrayMatlab C 函数库中对mxArray的包装类声明mxArray:mxArray *a;mwArraymwArray a;销毁mxArraymxDestroyArray a;mwArraymwArray类的析构函数自动销毁对象变量传递mxArraymxArray *dest_ptr mxCreateDoubleMatrix(rows,cols, mxREAL);memcpy(dest_ptr,source_ptr,MAX_SIZE);mwArraymwArray in1(rows, cols, mxDOUBLE_CLASS, mxREAL);mwArray in2(rows, cols, mxDOUBLE_CLASS, mxREAL);in1.SetData(data, rows*cols);in2.SetData(data, rows*cols);比较而言 。mwArray的声明更简洁不用考虑指针 。mwArray不用手动释放内存mxArray 介绍mxArray *mxCreateDoubleMatrix(int m, int n, mxComplexity ComplexFlag);参数m和n为矩阵的函数和列数。ComplexFlag为常数用来区分矩阵中元素是实数还是复数取值分别为mxREAL和mxCOMPLEX。类似的创建函数还有mxArray *mxCreateString(const char *str); 创建一个字符串类型并初始化为str字符串。对应的要删除一个数组mxDestroyArray该函数声明如下void mxDestroyArray(mxArray *array_ptr);要获得mxArray数组每一维上元素的个数可以用mxGetM和mxGetN函数。其中mxGetM用来获得数组第一维的元素个数对于矩阵来说就是行数。int mxGetM(const mxArray *array_ptr); //返回array_ptr对应数组第一维的元素个数(行数)int mxGetN(const mxArray *array_ptr); //返回array_ptr对应数组其它维的元素个数对于矩阵来说是列数。对于多维数组来说是从第2维到最后一维的各维元素个数的乘积。要获得某一特定维的元素个数则要用函数const int *mxGetDimensions(const mxArray *array_ptr);该函数返回array_ptr各维的元素个数保存在一个int数组中返回。对于常用的矩阵来说用mxGetM和mxGetN两个函数就可以了。另外还可以通过mxGetNumberOfDimensions来获得数组的总的维数用mxSetM、mxSetN设置矩阵的行数和列数函数说明如下int mxGetNumberOfDimensions(const mxArray *array_ptr); //返回数组的维数void mxSetM(mxArray *array_ptr, int m); //设置数组为m行void mxSetN(mxArray *array_ptr, int n); //设置数组为n列在对mxArray类型的变量进行操作之前可以验证以下其中的数组的数据类型比如是否为double数组、整数、字符串、逻辑值等以及是否为某种结构、类、或者是特殊类型比如是否为空数组是否为inf、NaN等。常见的判断函数有Use these functions to validate input arguments.C FunctionsmxIsDoubleDetermine whether mxArray represents data as double-precision, floating-point numbersmxIsSingleDetermine whether array represents data as single-precision, floating-point numbersmxIsComplexDetermine whether data is complexmxIsNumericDetermine whether array is numericmxIsInt64Determine whether array represents data as signed 64-bit integersmxIsUint64Determine whether array represents data as unsigned 64-bit integersmxIsInt32Determine whether array represents data as signed 32-bit integersmxIsUint32Determine whether array represents data as unsigned 32-bit integersmxIsInt16Determine whether array represents data as signed 16-bit integersmxIsUint16Determine whether array represents data as unsigned 16-bit integersmxIsInt8Determine whether array represents data as signed 8-bit integersmxIsUint8Determine whether array represents data as unsigned 8-bit integersmxIsScalarDetermine whether array is scalar arraymxIsCharDetermine whether input is mxChar arraymxIsLogicalDetermine whether array is of type mxLogicalmxIsLogicalScalarDetermine whether scalar array is of type mxLogicalmxIsLogicalScalarTrueDetermine whether scalar array of type mxLogical is truemxIsStructDetermine whether input is structure arraymxIsCellDetermine whether input is cell arraymxIsClassDetermine whether array is member of specified classmxIsInfDetermine whether input is infinitemxIsFiniteDetermine whether input is finitemxIsNaNDetermine whether input is NaN (Not-a-Number)mxIsEmptyDetermine whether array is emptymxIsSparseDetermine whether input is sparse arraymxIsFromGlobalWSDetermine whether array was copied from MATLAB global workspacemxAssertCheck assertion value for debugging purposesmxAssertSCheck assertion value without printing assertion text对于常用的double类型的数组可以用mxGetPr和mxGetPi两个函数分别获得其实部和虚部的数据指针这两个函数的声明如下double *mxGetPr(const mxArray *array_ptr); //返回数组array_ptr的实部指针double *mxGetPi(const mxArray *array_ptr); //返回数组array_ptr的虚部指针Utilities for manipulating strings and structures.C FunctionsmxArrayToStringArray to stringmxArrayToUTF8StringArray to string in UTF-8 encodingmxGetStringmxChar array to C-style string or Fortran character array另外一种操作mxArray的方法(在mathworks上居然没有搜索到..... 囧)//为了调用matlab中的函数必须使用数组数据类型并其后调用matlab函数将其转化为矩阵格式(matlab的基本数据类型是矩阵)static double x1[1]{1.0};static double x2[1]{2.5};double result;//调用matlab创建3个矩阵mxArray *AmclGetUninitializedArray();mxArray *BmclGetUninitializedArray();mxArray *CmclGetUninitializedArray();//将C语言中的变量值赋给matlab中的矩阵mlfAssign(A,mlfDoubleMatrix(1,1,x1,NULL));mlfAssign(B,mlfDoubleMatrix(1,1,x2,NULL));mlfAssign(C,mlfMyfunct(A,B)); //调m函数//将matlab中的矩阵的指针传递给C语言中的指向double的指针double * mdmxGetPr(C);resultmd[0];//释放这些矩阵mxDestroyArray(A);mxDestroyArray(B);mxDestroyArray(C);C Utility ClassesmwArrayClass used to pass input/output arguments to C functions generated by MATLAB Compiler SDKmwExceptionException type used by the mwArray API and the C interface functionsmwStringString class used by the mwArray API to pass string data as output from certain methodsmwArray 介绍构造函数ConstructorsmwArray() Description 创建空的Matlab阵列,类型为mxDOUBLE_CLASSmwArray(mxClassID mxID) Description 创建mxID指定类型的Matlab阵列ArgumentsmxClassID mxIDValid mxClassID specifying the type of array to construct. See the Work with mxArrays for more information on mxClassID.mwArray(mwSize num_rows, mwSize num_cols, mxClassID mxID, mxComplexity cmplx mxREAL)Description 创建行数为num_rows列数为num_cols类型为mxID的Matalb阵列对于数值型阵列,将complx做为最后一个参数,确定待创建阵列是否为复数阵列ArgumentsmwSize num_rowsNumber of rows in the arraymwSize num_colsNumber of columns in the arraymxClassID mxIDValid mxClassID specifying the type of array to construct. See the Work with mxArrays for more information on mxClassID.mxComplexity cmplxComplexity of the array to create. Valid values are mxREAL and mxCOMPLEX. The default value is mxREAL.mwArray(mwSize num_dims, const mwSize* dims, mxClassID mxID, mxComplexity cmplx mxREAL)Description创建任意维数的Matlab阵列维数由num_dims指定各维大小由dims指定mxID指定阵列的类型。对于数值型阵列将cmplx作为最后的一个参数确定待创建阵列是否为复型的阵列。All elements are initialized to zero. For cell arrays, all elements are initialized to empty cells.ArgumentsmwSize num_dimsNumber of dimensions in the arrayconst mwSize* dimsDimensions of the arraymxClassID mxIDValid mxClassID specifying the type of array to construct. See the Work with mxArrays for more information on mxClassID.mxComplexity cmplxComplexity of the array to create. Valid values are mxREAL and mxCOMPLEX. The default value is mxREAL.mwArray(const char* str)DescriptionCreate a 1-by-n array of type mxCHAR_CLASS, with n strlen(str), and initialize the arrays data with the characters in the supplied string.根据字符串str创建一个新的字符型阵列Argumentsconst char* strNull-terminated character buffer used to initialize the arraymwArray(mwSize num_strings, const char** str)Description创建字符型阵列(mxCHAR_CLASS)字符串由str指定. The created array has dimensions m-by-max, where max is the length of the longest string in str.ArgumentsmwSize num_stringsNumber of strings in the input arrayconst char** strArray of null-terminated stringsmwArray(mwSize num_rows, mwSize num_cols, int num_fields, const char** fieldnames)DescriptionCreate a matrix of type mxSTRUCT_CLASS, with the specified field names. All elements are initialized with empty cells.创建行数为num_rows列数为num_cols结构体阵列(mxSTRUCT_CLASS), 结构体域名为由fieldnames指定,域名个数由num_fields指定ArgumentsmwSize num_rowsNumber of rows in the arraymwSize num_colsNumber of columns in the arrayint num_fieldsNumber of fields in the struct matrix.const char** fieldnamesArray of null-terminated strings representing the field namesmwArray(mwSize num_dims, const mwSize* dims, int num_fields, const char** fieldnames)DescriptionCreate an n-dimensional array of type mxSTRUCT_CLASS, with the specified field names. All elements are initialized with empty cells.创建任意维数的结构体阵列维数由num_dims指定各维大小由dims指定结构体域名由fieldnames指定域名个数由num_fields指定.ArgumentsmwSize num_dimsNumber of dimensions in the arrayconst mwSize* dimsDimensions of the arrayint num_fieldsNumber of fields in the struct matrix.const char** fieldnamesArray of null-terminated strings representing the field namesmwArray(const mwArray arr)DescriptionCreate a deep copy of an existing array. 根据当前的阵列arr中创建一个新的阵列(复制)ArgumentsmwArray arrmwArray to copymwArray( re)DescriptionCreate a real scalar array. 创建一个新的数值阵列实部为re.The scalar array is created with the type of the input argument.Arguments reScalar value to initialize the array. can be any of the following:mxDoublemxSinglemxInt8mxUint8mxInt16mxUint16mxInt32mxUint32mxInt64mxUint64mxLogicalmwArray( re, im)DescriptionCreate a complex scalar array. 创建一个新的数值阵列实部为re,虚部为imThe scalar array is created with the type of the input argument.Arguments reScalar value to initialize the real part of the array imScalar value to initialize the imaginary part of the array can be any of the following: mxDoublemxSinglemxInt8mxUint8mxInt16mxUint16mxInt32mxUint32mxInt64mxUint64mxLogicalMethodsmwArray Clone() constDescriptionCreate a new array representing deep copy of array.ExamplemwArray a(2, 2, mxDOUBLE_CLASS);mwArray b a.Clone();mwArray SharedCopy() constDescriptionCreate a shared copy of an existing array. The new array and the original array both point to the same data.返回一个新的共享数据型mwArray阵列此阵列与现有的mwArray阵列指向同一个数据块。ExamplemwArray a(2, 2, mxDOUBLE_CLASS);mwArray b a.SharedCopy();mwArray Serialize() constDescriptionSerialize an array into bytes. A 1-by-n numeric matrix of type mxUINT8_CLASS is returned containing the serialized data. The data can be deserialized back into the original representation by calling mwArray::Deserialize().将mwArray序列化一个新的阵列新的阵列为mxUINT8_CLASS类型ExamplemwArray a(2, 2, mxDOUBLE_CLASS);mwArray b a.Serialize();mxClassID ClassID() constDescriptionDetermine the type of the array. See the Work with mxArrays for more information on mxClassID.ExamplemwArray a(2, 2, mxDOUBLE_CLASS);mxClassID id a.ClassID();int ElementSize() constDescriptionDetermine the size, in bytes, of an element of array type.返回mwArray阵列元素大小ExamplemwArray a(2, 2, mxDOUBLE_CLASS);int size a.ElementSize();size_t ElementSize() constDescriptionDetermine the size, in bytes, of an element of array type.ExamplemwArray a(2, 2, mxDOUBLE_CLASS);int size a.ElementSize();mwSize NumberOfElements() constDescriptionDetermine the total size of the array.返回阵列中元素的个数ExamplemwArray a(2, 2, mxDOUBLE_CLASS);int n a.NumberOfElements();mwSize NumberOfNonZeros() constDescriptionDetermine the size of the of the arrays data. If the underlying array is not sparse, this returns the same value as NumberOfElements().返回稀疏阵列非零元素的个数ExamplemwArray a(2, 2, mxDOUBLE_CLASS);int n a.NumberOfNonZeros();mwSize MaximumNonZeros() constDescriptionDetermine the allocated size of the of the arrays data. If the underlying array is not sparse, this returns the same value as NumberOfElements().返回稀疏阵列中最大的元素的个数ExamplemwArray a(2, 2, mxDOUBLE_CLASS);int n a.MaximumNonZeros();mwSize NumberOfDimensions() constDescriptionDetermine the dimensionality of the array. 返回阵列维数ExamplemwArray a(2, 2, mxDOUBLE_CLASS);int n a.NumberOfDimensions();int NumberOfFields() constDescriptionDetermine the number of fields in a struct array. If the underlying array is not of type struct, zero is returned.返回结构体域个数Exampleconst char* fields[] {a, b, c};mwArray a(2, 2, 3, fields);int n a.NumberOfFields();mwString GetFieldName(int index)DescriptionDetermine the name of a given field in a struct array. If the underlying array is not of type struct, an exception is thrown.Argumentsint indexIndex of the field to name. Indexing starts at zero.Exampleconst char* fields[] {a, b, c};mwArray a(2, 2, 3, fields);mwString tempname a.GetFieldName(1);const char* name (const char*)tempname;mwArray GetDimensions() constDescriptionDetermine the size of each dimension in the array. The size of the returned array is 1-by-NumberOfDimensions().ExamplemwArray a(2, 2, mxDOUBLE_CLASS);mwArray dims a.GetDimensions();bool IsEmpty() constDescriptionDetermine if an array is empty.ExamplemwArray a;bool b a.IsEmpty();bool IsSparse() constDescriptionDetermine if an array is sparse.ExamplemwArray a(2, 2, mxDOUBLE_CLASS);bool b a.IsSparse();bool IsNumeric() constDescriptionDetermine if an array is numeric.ExamplemwArray a(2, 2, mxDOUBLE_CLASS);bool b a.IsNumeric();bool IsComplex() constDescriptionDetermine if an array is complex.ExamplemwArray a(2, 2, mxDOUBLE_CLASS, mxCOMPLEX);bool b a.IsComplex();bool Equals(const mwArray arr) constDescriptionReturns true if the input array is byte-wise equal to this array. This method makes a byte-wise comparison of the underlying arrays. Therefore, arrays of the same type should be compared. Arrays of different types will not in general be equal, even if they are initialized with the same data.ArgumentsmwArray arrArray to compare to array.ExamplemwArray a(1, 1, mxDOUBLE_CLASS);mwArray b(1, 1, mxDOUBLE_CLASS);a 1.0;b 1.0;bool c a.Equals(b);int CompareTo(const mwArray arr) constDescriptionCompares this array with the specified array for order. This method makes a byte-wise comparison of the underlying arrays. Therefore, arrays of the same type should be compared. Arrays of different types will, in general, not be ordered equivalently, even if they are initialized with the same data.ArgumentsmwArray arrArray to compare to array.ExamplemwArray a(1, 1, mxDOUBLE_CLASS);mwArray b(1, 1, mxDOUBLE_CLASS);a 1.0;b 1.0;int n a.CompareTo(b);int HashCode() constDescriptionConstructs a unique hash value form the underlying bytes in the array. Therefore, arrays of different types will have different hash codes, even if they are initialized with the same data.ExamplemwArray a(1, 1, mxDOUBLE_CLASS);int n a.HashCode();mwString ToString() constDescriptionReturns a string representation of the underlying array. The string returned is the same string that is returned by typing a variables name at the MATLAB command prompt.ExamplemwArray a(1, 1, mxDOUBLE_CLASS, mxCOMPLEX);a.Real() 1.0;a.Imag() 2.0;printf(%s, (const char*)(a.ToString()));mwArray RowIndex() constDescriptionReturns an array of type mxINT32_CLASS representing the row indices (first dimension) of this array. For sparse arrays, the indices are returned for just the non-zero elements and the size of the array returned is 1-by-NumberOfNonZeros(). For nonsparse arrays, the size of the array returned is 1-by-NumberOfElements(), and the row indices of all of the elements are returned.返回阵列元素的行索引;对于稀疏阵列,只返回非零原素的行索引Example#include mwArray a(1, 1, mxDOUBLE_CLASS);mwArray rows a.RowIndex();mwArray ColumnIndex() constDescriptionReturns an array of type mxINT32_CLASS representing the column indices (second dimension) of this array. For sparse arrays, the indices are returned for just the non-zero elements and the size of the array returned is 1-by-NumberOfNonZeros(). For nonsparse arrays, the size of the array returned is 1-by-NumberOfElements(), and the column indices of all of the elements are returned.返回阵列元素的列索引;对于稀疏阵列,只返回非零元素的列索引。ExamplemwArray a(1, 1, mxDOUBLE_CLASS);mwArray rows a.ColumnIndex();void MakeComplex()DescriptionConvert a numeric array that has been previously allocated as real to complex. If the underlying array is of a nonnumeric type, an mwException is thrown.Exampledouble rdata[4] {1.0, 2.0, 3.0, 4.0};double idata[4] {10.0, 20.0, 30.0, 40.0};mwArray a(2, 2, mxDOUBLE_CLASS);a.SetData(rdata, 4);a.MakeComplex();a.Imag().SetData(idata, 4);mwArray Get(mwSize num_indices, ...)DescriptionFetches a single element at a specified index. The index is passed by first passing the number of indices followed by a comma-separated list of 1-based indices. The valid number of indices that can be passed in is either 1 (single subscript indexing), in which case the element at the specified 1-based offset is returned, accessing data in column-wise order, or NumberOfDimensions() (multiple subscript indexing), in which case, the index list is used to access the specified element. The valid range for indices is 1 index NumberOfElements(), for single subscript indexing. For multiple subscript indexing, the ith index has the valid range: 1 index[i] GetDimensions().Get(1, i). An mwException is thrown if an invalid number of indices is passed in or if any index is out of bounds.根据索引返回阵列元素其中num_indices表示索引数目。Get函数中输入的索引均从1起始。ArgumentsmwSize num_indicesNumber of indices passed in...Comma-separated list of input indices. Number of items must equal num_indices but should not exceed 32.Exampledouble data[4] {1.0, 2.0, 3.0, 4.0};double x;mwArray a(2, 2, mxDOUBLE_CLASS);a.SetData(data, 4);x a.Get(1,1);x a.Get(2, 1, 2);x a.Get(2, 2, 2);mwArray Get(const char* name, mwSize num_indices, ...)DescriptionFetches a single element at a specified field name and index. This method may only be called on an array that is of type mxSTRUCT_CLASS. An mwException is thrown if the underlying array is not a struct array. The field name passed must be a valid field name in the struct array. The index is passed by first passing the number of indices followed by a comma-separated list of 1-based indices. The valid number of indices that can be passed in is either 1 (single subscript indexing), in which case the element at the specified 1-based offset is returned, accessing data in column-wise order, or NumberOfDimensions() (multiple subscript indexing), in which case, the index list is used to access the specified element. The valid range for indices is 1 index NumberOfElements(), for single subscript indexing. For multiple subscript indexing, the ith index has the valid range: 1 index[i] GetDimensions().Get(1, i). AnmwException is thrown if an invalid number of indices is passed in or if any index is out of bounds.返回结构体域名为name指定索引的结构体域其中num_indices表示索引的数目。Get函数中输入的索引均从1起始。Argumentschar* nameNull-terminated character buffer containing the name of the fieldmwSize num_indicesNumber of indices passed in...Comma-separated list of input indices. Number of items must equalnum_indices but should not exceed 32.Exampleconst char* fields[] {a, b, c};mwArray a(1, 1, 3, fields);mwArray b a.Get(a, 1, 1);mwArray b a.Get(b, 2, 1, 1);mwArray Get(mwSize num_indices, const mwIndex* index)DescriptionFetches a single element at a specified index. The index is passed by first passing the number of indices, followed by an array of 1-based indices. The valid number of indices that can be passed in is either 1 (single subscript indexing), in which case the element at the specified 1-based offset is returned, accessing data in column-wise order, or NumberOfDimensions() (multiple subscript indexing), in which case, the index list is used to access the specified element. The valid range for indices is 1 index NumberOfElements(), for single subscript indexing. For multiple subscript indexing, the ith index has the valid range: 1 index[i] GetDimensions().Get(1, i). An mwException is thrown if an invalid number of indices is passed in or if any index is out of bounds.ArgumentsmwSize num_indicesSize of index arraymwIndex* indexArray of at least size num_indices containing the indicesExampledouble data[4] {1.0, 2.0, 3.0, 4.0};int index[2] {1, 1};double x;mwArray a(2, 2, mxDOUBLE_CLASS);a.SetData(data, 4);x a.Get(1, index);x a.Get(2, index);index[0] 2;index[1] 2;x a.Get(2, index);mwArray Get(const char* name, mwSize num_indices, const mwIndex* index)DescriptionFetches a single element at a specified field name and index. This method may only be called on an array that is of type mxSTRUCT_CLASS. An mwException is thrown if the underlying array is not a struct array. The field name passed must be a valid field name in the struct array. The index is passed by first passing the number of indices followed by an array of 1-based indices. The valid number of indices that can be passed in is either 1 (single subscript indexing), in which case the element at the specified 1-based offset is returned, accessing data in column-wise order, or NumberOfDimensions() (multiple subscript indexing), in which case, the index list is used to access the specified element. The valid range for indices is 1 index NumberOfElements(), for single subscript indexing. For multiple subscript indexing, the ith index has the valid range: 1 index[i] GetDimensions().Get(1, i). An mwException is thrown if an invalid number of indices is passed in or if any index is out of bounds.Argumentschar* nameNull-terminated character buffer containing the name of the fieldmwSize num_indicesNumber of indices passed inmwIndex* indexArray of at least size num_indices containing the indicesExampleconst char* fields[] {a, b, c};int index[2] {1, 1};mwArray a(1, 1, 3, fields);mwArray b a.Get(a, 1, index);mwArray b a.Get(b, 2, index);mwArray Real()DescriptionAccesses the real part of a complex array. The returned mwArray is considered real and has the same dimensionality and type as the original.Complex arrays consist of Complex numbers, which are 1 X 2 vectors (pairs). For example, if the number is 35i, then the pair is (3,5i). An array of Complex numbers is therefore two dimensional (N X 2), where N is the number of complex numbers in the array. 24i, 7-3i, 86i would be represented as (2,4i) (7,3i) (8,6i). Complex numbers have two components, real and imaginary.The MATLAB function Realcan be applied to an array of Complex numbers. It extracts the corresponding part of the Complex number. For example,REAL(3,5i) 3.返回数值阵列的实部Exampledouble rdata[4] {1.0, 2.0, 3.0, 4.0};double idata[4] {10.0, 20.0, 30.0, 40.0};mwArray a(2, 2, mxDOUBLE_CLASS, mxCOMPLEX);a.Real().SetData(rdata, 4);mwArray Imag()DescriptionAccesses the imaginary part of a complex array. The returned mwArray is considered real and has the same dimensionality and type as the original.Complex arrays consist of Complex numbers, which are 1 X 2 vectors (pairs). For example, if the number is 35i, then the pair is (3,5i). An array of Complex numbers is therefore two dimensional (N X 2), where N is the number of complex numbers in the array. 24i, 7-3i, 86i would be represented as (2,4i) (7,3i) (8,6i). Complex numbers have two components, real and imaginary.The MATLAB function Imag can be applied to an array of Complex numbers. It extracts the corresponding part of the Complex number. For example,IMAG(35i) 5. Imag returns 5 in this case and not 5i. Imag returns the magnitude of the imaginary part of the number as a real number.返回数值阵列虚部Exampledouble rdata[4] {1.0, 2.0, 3.0, 4.0};double idata[4] {10.0, 20.0, 30.0, 40.0};mwArray a(2, 2, mxDOUBLE_CLASS, mxCOMPLEX);a.Imag().SetData(idata, 4);void Set(const mwArray arr)DescriptionAssign shared copy of input array to currently referenced cell for arrays of type mxCELL_CLASS and mxSTRUCT_CLASS.ArgumentsmwArray arrmwArray to assign to currently referenced cellExamplemwArray a(2, 2, mxDOUBLE_CLASS);mwArray b(2, 2, mxINT16_CLASS);mwArray c(1, 2, mxCELL_CLASS);c.Get(1,1).Set(a);c.Get(1,2).Set(b);void GetData(* buffer, mwSize len) constDescriptionCopies the arrays data into supplied numeric buffer.The data is copied in column-major order. If the underlying array is not of the same type as the input buffer, the data is converted to this type as it is copied. If a conversion cannot be made, an mwException is thrown.Arguments* bufferBuffer to receive copy. Valid types for are:mxDOUBLE_CLASS / mxSINGLE_CLASS / mxINT8_CLASSmxUINT8_CLASS / mxINT16_CLASS / mxUINT16_CLASSmxINT32_CLASS / mxUINT32_CLASS / mxINT64_CLASSmxUINT64_CLASSmwSize lenMaximum length of buffer. A maximum of len elements will be copied.Exampledouble rdata[4] {1.0, 2.0, 3.0, 4.0};double data_copy[4] ;mwArray a(2, 2, mxDOUBLE_CLASS);a.SetData(rdata, 4);a.GetData(data_copy, 4);void GetLogicalData(mxLogical* buffer, mwSize len) constDescriptionCopies the arrays data into supplied mxLogical buffer.The data is copied in column-major order. If the underlying array is not of type mxLOGICAL_CLASS, the data is converted to this type as it is copied. If a conversion cannot be made, an mwException is thrown.ArgumentsmxLogical* bufferBuffer to receive copymwSize lenMaximum length of buffer. A maximum of len elements will be copied.ExamplemxLogical data[4] {true, false, true, false};mxLogical data_copy[4] ;mwArray a(2, 2, mxLOGICAL_CLASS);a.SetLogicalData(data, 4);a.GetLogicalData(data_copy, 4);void GetCharData(mxChar* buffer, mwSize len) constDescriptionCopies the arrays data into supplied mxChar buffer.The data is copied in column-major order. If the underlying array is not of type mxCHAR_CLASS, the data is converted to this type as it is copied. If a conversion cannot be made, an mwException is thrown.ArgumentsmxChar** bufferBuffer to receive copymwSize lenMaximum length of buffer. A maximum of len elements will be copied.ExamplemxChar data[6] {H, e , l , l , o , };mxChar data_copy[6] ;mwArray a(1, 6, mxCHAR_CLASS);a.SetCharData(data, 6);a.GetCharData(data_copy, 6);void SetData(* buffer, mwSize len) constDescriptionCopies the data from supplied numeric buffer into the array.The data is copied in column-major order. If the underlying array is not of the same type as the input buffer, the data is converted to this type as it is copied. If a conversion cannot be made, an mwException is thrown.Arguments* bufferBuffer containing data to copy. Valid types for are:mxDOUBLE_CLASS / mxSINGLE_CLASS / mxINT8_CLASSmxUINT8_CLASS / mxINT16_CLASS / mxUINT16_CLASSmxINT32_CLASS / mxUINT32_CLASS / mxINT64_CLASSmxUINT64_CLASSmwSize lenMaximum length of buffer. A maximum of len elements will be copied.Exampledouble rdata[4] {1.0, 2.0, 3.0, 4.0};double data_copy[4] ;mwArray a(2, 2, mxDOUBLE_CLASS);a.SetData(rdata, 4);a.GetData(data_copy, 4);void SetLogicalData(mxLogical* buffer, mwSize len) constDescriptionCopies the data from the supplied mxLogical buffer into the array.The data is copied in column-major order. If the underlying array is not of type mxLOGICAL_CLASS, the data is converted to this type as it is copied. If a conversion cannot be made, an mwException is thrown.ArgumentsmxLogical* bufferBuffer containing data to copymwSize lenMaximum length of buffer. A maximum of len elements will be copied.ExamplemxLogical data[4] {true, false, true, false};mxLogical data_copy[4] ;mwArray a(2, 2, mxLOGICAL_CLASS);a.SetLogicalData(data, 4);a.GetLogicalData(data_copy, 4);void SetCharData(mxChar* buffer, mwSize len) constDescriptionCopies the data from the supplied mxChar buffer into the array.The data is copied in column-major order. If the underlying array is not of type mxCHAR_CLASS, the data is converted to this type as it is copied. If a conversion cannot be made, an mwException is thrown.ArgumentsmxChar** bufferBuffer containing data to copymwSize lenMaximum length of buffer. A maximum of len elements will be copied.ExamplemxChar data[6] {H, e , l , l , o , };mxChar data_copy[6] ;mwArray a(1, 6, mxCHAR_CLASS);a.SetCharData(data, 6);a.GetCharData(data_copy, 6);static mwArray Deserialize(const mwArray arr)DescriptionDeserializes an array that has been serialized with mwArray::Serialize(). The input array must be of type mxUINT8_CLASS and contain the data from a serialized array. If the input data does not represent a serialized mwArray, the behavior of this method is undefined.ArgumentsmwArray arrmwArray that has been obtained by calling mwArray::SerializeExampledouble rdata[4] {1.0, 2.0, 3.0, 4.0};mwArray a(1,4,mxDOUBLE_CLASS);a.SetData(rdata, 4);mwArray b a.Serialize();a mwArray::Deserialize(b);static mwArray NewSparse(mwSize rowindex_size, const mwIndex* rowindex, mwSize colindex_size, const mwIndex* colindex, mwSize data_size, const mxDouble* rData, mwSize num_rows, mwSize num_cols, mwSize nzmax)DescriptionCreates real sparse matrix of type double with specified number of rows and columns.The lengths of input row, column index, and data arrays must all be the same or equal to 1. In the case where any of these arrays are equal to 1, the value is repeated throughout the construction of the matrix.If any element of the rowindex or colindex array is greater than the specified values in num_rows or num_cols respectively, an exception is thrown.ArgumentsmwSize rowindex_sizeSize of rowindex arraymwIndex* rowindexArray of row indices of non-zero elementsmwSize colindex_sizeSize of colindex arraymwIndex* colindexArray of column indices of non-zero elementsmwSize data_sizeSize of data arraymxDouble* rDataData associated with non-zero row and column indicesmwSize num_rowsNumber of rows in matrixmwSize num_colsNumber of columns in matrixmwSize nzmaxReserved storage for sparse matrix. If nzmax is zero, storage will be set tomax{rowindex_size, colindex_size, data_size}.ExampleThis example constructs a sparse 4 X 4 tridiagonal matrix:2 -1 0 0-1 2 -1 00 -1 2 -10 0 -1 2The following code, when run:double rdata[] {2.0, -1.0, -1.0, 2.0, -1.0,-1.0, 2.0, -1.0, -1.0, 2.0};mwIndex row_tridiag[] {1, 2, 1, 2, 3,2, 3, 4, 3, 4 };mwIndex col_tridiag[] {1, 1, 2, 2, 2,3, 3, 3, 4, 4 };mwArray mysparse mwArray::NewSparse(10, row_tridiag,10, col_tridiag,10, rdata, 4, 4, 10);std::cout mysparse std::endl;will display the following output to the screen:(1,1) 2(2,1) -1(1,2) -1(2,2) 2(3,2) -1(2,3) -1(3,3) 2(4,3) -1(3,4) -1(4,4) 2static mwArray NewSparse(mwSize rowindex_size, const mwIndex* rowindex, mwSize colindex_size, const mwIndex* colindex, mwSize data_size, const mxDouble* rdata, mwSize nzmax)DescriptionCreates real sparse matrix of type double with number of rows and columns inferred from input data.The lengths of input row and column index and data arrays must all be the same or equal to 1. In the case where any of these arrays are equal to 1, the value is repeated through out the construction of the matrix.The number of rows and columns in the created matrix are calculated form the input rowindex and colindex arrays as num_rows max{rowindex}, num_cols max{colindex}.ArgumentsmwSize rowindex_sizeSize of rowindex arraymwIndex* rowindexArray of row indices of non-zero elementsmwSize colindex_sizeSize of colindex arraymwIndex* colindexArray of column indices of non-zero elementsmwSize data_sizeSize of data arraymxDouble* rDataData associated with non-zero row and column indicesmwSize nzmaxReserved storage for sparse matrix. If nzmax is zero, storage will be set tomax{rowindex_size, colindex_size, data_size}.ExampleIn this example, we construct a sparse 4 X 4 identity matrix. The value of 1.0 is copied to each non-zero element defined by row and column index arrays:double one 1.0;mwIndex row_diag[] {1, 2, 3, 4};mwIndex col_diag[] {1, 2, 3, 4};mwArray mysparse mwArray::NewSparse(4, row_diag,4, col_diag,1, one,0);std::cout mysparse std::endl;(1,1) 1(2,2) 1(3,3) 1(4,4) 1static mwArray NewSparse(mwSize rowindex_size, const mwIndex* rowindex, mwSize colindex_size, const mwIndex* colindex, mwSize data_size, const mxDouble* rdata, const mxDouble* idata, mwSize num_rows, mwSize num_cols, mwSize nzmax)DescriptionCreates complex sparse matrix of type double with specified number of rows and columns.The lengths of input row and column index and data arrays must all be the same or equal to 1. In the case where any of these arrays are equal to 1, the value is repeated through out the construction of the matrix.If any element of the rowindex or colindex array is greater than the specified values in num_rows, num_cols, respectively, then an exception is thrown.ArgumentsmwSize rowindex_sizeSize of rowindex arraymwIndex* rowindexArray of row indices of non-zero elementsmwSize colindex_sizeSize of colindex arraymwIndex* colindexArray of column indices of non-zero elementsmwSize data_sizeSize of data arraymxDouble* rDataReal part of data associated with non-zero row and column indicesmxDouble* iDataImaginary part of data associated with non-zero row and column indicesmwSize num_rowsNumber of rows in matrixmwSize num_colsNumber of columns in matrixmwSize nzmaxReserved storage for sparse matrix. If nzmax is zero, storage will be set tomax{rowindex_size, colindex_size, data_size}.ExampleThis example constructs a complex tridiagonal matrix:double rdata[] {2.0, -1.0, -1.0, 2.0, -1.0, -1.0, 2.0, -1.0, -1.0, 2.0};double idata[] {20.0, -10.0, -10.0, 20.0, -10.0, -10.0, 20.0, -10.0, -10.0, 20.0};mwIndex row_tridiag[] {1, 2, 1, 2, 3, 2, 3, 4, 3, 4};mwIndex col_tridiag[] {1, 1, 2, 2, 2, 3, 3, 3, 4, 4};mwArray mysparse mwArray::NewSparse(10, row_tridiag,10, col_tridiag,10, rdata,idata, 4, 4, 10);std::cout mysparse std::endl;It displays the following output to the screen:(1,1) 2.0000 20.0000i(2,1) -1.0000 -10.0000i(1,2) -1.0000 -10.0000i(2,2) 2.0000 20.0000i(3,2) -1.0000 -10.0000i(2,3) -1.0000 -10.0000i(3,3) 2.0000 20.0000i(4,3) -1.0000 -10.0000i(3,4) -1.0000 -10.0000i(4,4) 2.0000 20.0000istatic mwArray NewSparse(mwSize rowindex_size, const mwIndex* rowindex, mwSize colindex_size, const mwIndex* colindex, mwSize data_size, const mxDouble* rdata, const mxDouble* idata, mwSize nzmax)DescriptionCreates complex sparse matrix of type double with number of rows and columns inferred from input data.The lengths of input row and column index and data arrays must all be the same or equal to 1. In the case where any of these arrays are equal to 1, the value is repeated through out the construction of the matrix.The number of rows and columns in the created matrix are calculated form the input rowindex and colindex arrays as num_rows max{rowindex}, num_cols max{colindex}.ArgumentsmwSize rowindex_sizeSize of rowindex arraymwIndex* rowindexArray of row indices of non-zero elementsmwSize colindex_sizeSize of colindex arraymwIndex* colindexArray of column indices of non-zero elementsmwSize data_sizeSize of data arraymxDouble* rDataReal part of data associated with non-zero row and column indicesmxDouble* iDataImaginary part of data associated with non-zero row and column indicesmwSize nzmaxReserved storage for sparse matrix. If nzmax is zero, storage will be set tomax{rowindex_size, colindex_size, data_size}.ExampleThis example constructs a complex matrix by inferring dimensions and storage allocation from the input data.mwArray mysparse mwArray::NewSparse(10, row_tridiag,10, col_tridiag,10, rdata, idata,0);std::cout mysparse std::endl;(1,1) 2.0000 20.0000i(2,1) -1.0000 -10.0000i(1,2) -1.0000 -10.0000i(2,2) 2.0000 20.0000i(3,2) -1.0000 -10.0000i(2,3) -1.0000 -10.0000i(3,3) 2.0000 20.0000i(4,3) -1.0000 -10.0000i(3,4) -1.0000 -10.0000i(4,4) 2.0000 20.0000istatic mwArray NewSparse(mwSize rowindex_size, const mwIndex* rowindex, mwSize colindex_size, const mwIndex* colindex, mwSize data_size, const mxLogical* rdata, mwSize num_rows, mwSize num_cols, mwSize nzmax)DescriptionCreates logical sparse matrix with specified number of rows and columns.The lengths of input row and column index and data arrays must all be the same or equal to 1. In the case where any of these arrays are equal to 1, the value is repeated throughout the construction of the matrix.If any element of the rowindex or colindex array is greater than the specified values in num_rows, num_cols, respectively, then an exception is thrown.ArgumentsmwSize rowindex_sizeSize of rowindex arraymwIndex* rowindexArray of row indices of non-zero elementsmwSize colindex_sizeSize of colindex arraymwIndex* colindexArray of column indices of non-zero elementsmwSize data_sizeSize of data arraymxLogical* rDataData associated with non-zero row and column indicesmwSize num_rowsNumber of rows in matrixmwSize num_colsNumber of columns in matrixmwSize nzmaxReserved storage for sparse matrix. If nzmax is zero, storage will be set tomax{rowindex_size, colindex_size, data_size}.ExampleThis example creates a sparse logical 4 X 4 tridiagonal matrix, assigning true to each non-zero value:mxLogical one true;mwIndex row_tridiag[] {1, 2, 1, 2, 3, 2, 3, 4, 3, 4};mwIndex col_tridiag[] {1, 1, 2, 2, 2, 3, 3, 3, 4, 4};mwArray mysparse mwArray::NewSparse(10, row_tridiag,10, col_tridiag,1, one,4, 4, 10);std::cout mysparse std::endl;(1,1) 1(2,1) 1(1,2) 1(2,2) 1(3,2) 1(2,3) 1(3,3) 1(4,3) 1(3,4) 1(4,4) 1static mwArray NewSparse(mwSize rowindex_size, const mwIndex* rowindex, mwSize colindex_size, const mwIndex* colindex, mwSize data_size, const mxLogical* rdata, mwSize nzmax)DescriptionCreates logical sparse matrix with number of rows and columns inferred from input data.The lengths of input row and column index and data arrays must all be the same or equal to 1. In the case where any of these arrays are equal to 1, the value is repeated through out the construction of the matrix.The number of rows and columns in the created matrix are calculated form the input rowindex and colindex arrays as num_rows max {rowindex}, num_cols max {colindex}.ArgumentsmwSize rowindex_sizeSize of rowindex arraymwIndex* rowindexArray of row indices of non-zero elementsmwSize colindex_sizeSize of colindex arraymwIndex* colindexArray of column indices of non-zero elementsmwSize data_sizeSize of data arraymxLogical* rDataData associated with non-zero row and column indicesmwSize nzmaxReserved storage for sparse matrix. If nzmax is zero, storage will be set tomax{rowindex_size, colindex_size, data_size}.ExampleThis example uses the data from the first example, but allows the number of rows, number of columns, and allocated storage to be calculated from the input data:mwArray mysparse mwArray::NewSparse(10, row_tridiag,10, col_tridiag,1, one,0);std::cout mysparse std::endl;(1,1) 1(2,1) 1(1,2) 1(2,2) 1(3,2) 1(2,3) 1(3,3) 1(4,3) 1(3,4) 1(4,4) 1static mwArray NewSparse (mwSize num_rows, mwSize num_cols, mwSize nzmax, mxClassID