mwArray
类用于将输入/输出参数传递给MATLAB编译器SDK
描述
使用mwArray
类将输入/输出参数传递给生成的c++接口函数。这个类由一个围绕MATLAB的薄包装器组成®数组中。MATLAB中的所有数据都用数组表示。的mwArray
类提供了数组创建和初始化所需的构造函数、方法和操作符,以及简单的索引。
请注意
算术运算符,例如加法和减法,从版本14开始不再支持。金宝app
要求标题
mclcppclass.h
mclmcrrt.h
提示
MATLAB编译SDK™自动将这些头文件包含在为MATLAB函数生成的头文件中。
构造函数
mwArray ()
描述
构造类型为空的数组mxDOUBLE_CLASS
。
mwArray (mxClassID mxID)
描述
构造指定类型的空数组。
参数
mxClassID mxID |
有效的mxClassID 指定要构造的数组类型。看到使用mxArrays(MATLAB)获取更多信息mxClassID 。 |
mwArray(mwSize num_rows, mwSize num_cols, mxClassID mxID, mxComplexity cmplx = mxREAL)
描述
创建指定类型和复杂度的2-D矩阵。对于非数值类型,mxComplexity
会被忽略。对于数字类型,passmxCOMPLEX
对于最后一个参数创建一个复杂矩阵;否则,矩阵就是实数。所有元素都初始化为零。对于单元格矩阵,所有元素都被初始化为空单元格。
参数
mwSize num_rows |
数组中的行数 |
mwSize num_cols |
数组中的列数 |
mxClassID mxID |
有效的mxClassID 指定要构造的数组类型。看到使用mxArrays(MATLAB)获取更多信息mxClassID 。 |
mxComplexity cmplx |
创建数组的复杂性。有效值为mxREAL 和mxCOMPLEX 。默认值为mxREAL 。 |
mwArray(mwSize num_dims, const mwSize* dims, mxClassID mxID, mxComplexity cmplx = mxREAL)
描述
创建一个n
指定类型和复杂度的-维度数组。对于非数值类型,mxComplexity
会被忽略。对于数字类型,passmxCOMPLEX
对于最后一个参数创建一个复杂矩阵;否则,数组将是实数。所有元素都初始化为零。对于单元格数组,所有元素都被初始化为空单元格。
参数
mwSize num_dims |
数组中的维数 |
const mwSize*暗 |
数组的尺寸 |
mxClassID mxID |
有效的mxClassID 指定要构造的数组类型。看到使用mxArrays(MATLAB)获取更多信息mxClassID 。 |
mxComplexity cmplx |
创建数组的复杂性。有效值为mxREAL 和mxCOMPLEX 。默认值为mxREAL 。 |
mwArray(const char* str)
描述
创建一个1 × -
类型数组n
mxCHAR_CLASS
,N = strlen(str)
,并使用提供的字符串中的字符初始化数组的数据。
参数
Const char* STR |
用于初始化数组的以空结束的字符缓冲区 |
mwArray(mwSize num_strings, const char** str)
描述
创建一个类型矩阵mxCHAR_CLASS
,并使用提供的字符串中的字符初始化数组的数据。创建的数组有维度米
——- - - - - -马克斯
,在那里米
字符串的数量和马克斯
最长的弦的长度在吗str
。
参数
mwSize num_strings |
输入数组中的字符串数 |
常量char** STR |
以空结束的字符串数组 |
mwArray(mwSize num_rows, mwSize num_cols, int num_fields, const char** fieldnames)
描述
创建一个类型矩阵mxSTRUCT_CLASS
,使用指定的字段名。所有元素都用空单元初始化。
参数
mwSize num_rows |
数组中的行数 |
mwSize num_cols |
数组中的列数 |
int num_fields |
属性中的字段个数结构体 矩阵。 |
Const char** fieldnames |
表示字段名称的以空结束的字符串数组 |
mwArray(mwSize num_dims, const mwSize* dims, int num_fields, const char** fieldnames)
描述
创建一个n
类型的-维数组mxSTRUCT_CLASS
,使用指定的字段名。所有元素都用空单元初始化。
参数
mwSize num_dims |
数组中的维数 |
const mwSize*暗 |
数组的尺寸 |
int num_fields |
属性中的字段个数结构体 矩阵。 |
Const char** fieldnames |
表示字段名称的以空结束的字符串数组 |
mwArray(const mwArray& arr)
描述
创建现有数组的深度副本。
参数
mwArray&加勒比海盗 |
mwArray 复制 |
mwArray(<类型>重新)
描述
创建一个实标量数组。
使用输入参数的类型创建标量数组。
参数
<类型>再保险 |
标量值初始化数组。<类型> 可以是以下任意一个:
|
mwArray( re, im)
描述
创建复杂标量数组。
使用输入参数的类型创建标量数组。
参数
<类型>再保险 |
标量值初始化数组的实部 |
<类型>我 |
标量值初始化数组的虚部 |
<类型>
可以是以下任意一个:
mxDouble
mxSingle
mxInt8
mxUint8
mxInt16
mxUint16
mxInt32
mxUint32
mxInt64
mxUint64
mxLogical
方法
mwArray Clone() const
描述
创建一个表示数组深度拷贝的新数组。
例子
mwArray a(2,2, mxDOUBLE_CLASS);mwArray b = a.Clone();
mwArray SharedCopy() const
描述
创建现有数组的共享副本。新数组和原始数组都指向相同的数据。
例子
mwArray a(2,2, mxDOUBLE_CLASS);mwArray b = a.SharedCopy();
mwArray Serialize() const
描述
将数组序列化为字节。1 -n
类型的数值矩阵mxUINT8_CLASS
返回包含序列化数据的。可以通过调用将数据反序列化回原始表示mwArray:反序列化()
。
例子
mwArray a(2,2, mxDOUBLE_CLASS);mwArray b = a.Serialize();
mxClassID ClassID() const
描述
确定数组的类型。看到使用mxArrays(MATLAB)获取更多信息mxClassID
。
例子
mwArray a(2,2, mxDOUBLE_CLASS);mxClassID id = a.c classid ();
ElementSize(
描述
确定数组类型元素的大小(以字节为单位)。如果数组比较复杂,返回值将表示元素实部的大小(以字节为单位)。
例子
mwArray a(2,2, mxDOUBLE_CLASS);int size = a.ElementSize();
mwSize NumberOfElements(
描述
确定数组的总大小。
例子
mwArray a(2,2, mxDOUBLE_CLASS);int n = a.NumberOfElements();
mwSize numberofnonzero () const
描述
确定数组数据的大小。如果底层数组不是稀疏数组,则返回与NumberOfElements ()
。
例子
mwArray a(2,2, mxDOUBLE_CLASS);int n = a.NumberOfNonZeros();
mwSize maximumnonzero()常量
描述
确定数组数据的分配大小。如果底层数组不是稀疏数组,则返回与NumberOfElements ()
。
例子
mwArray a(2,2, mxDOUBLE_CLASS);int n = a.MaximumNonZeros();
mwSize NumberOfDimensions(
描述
确定数组的维数。
例子
mwArray a(2,2, mxDOUBLE_CLASS);int n = a.NumberOfDimensions();
int numberfields () const
描述
确定字段的数量结构体
数组中。如果基础数组不是类型结构体
,返回0。
例子
Const char* fields[] = {"a", "b", "c"};mwArray a(2,2,3,字段);int n = a. numberfields ();
GetFieldName(int index)
描述
类中给定字段的名称结构体
数组中。如果基础数组不是类型结构体
,则抛出异常。
参数
int指数 |
要命名的字段的索引。索引从0开始。 |
例子
Const char* fields[] = {"a", "b", "c"};mwArray a(2,2,3,字段);mwString tempname = a.GetFieldName(1);Const char* name = (Const char*)tempname;
mwArray GetDimensions() const
描述
确定数组中每个维度的大小。返回数组的大小为1 × -NumberOfDimensions ()
。
例子
mwArray a(2,2, mxDOUBLE_CLASS);mwArray dim = a.g getdimensions ();
bool IsEmpty() const
描述
判断数组是否为空。
例子
mwArray;bool b = a.IsEmpty();
bool IsSparse()常量
描述
判断数组是否稀疏。
例子
mwArray a(2,2, mxDOUBLE_CLASS);bool b = a.IsSparse();
bool IsNumeric()常量
描述
确定数组是否为数字数组。
例子
mwArray a(2,2, mxDOUBLE_CLASS);bool b = a.IsNumeric();
bool IsComplex()常量
描述
判断数组是否复杂。
例子
mwArray a(2,2, mxDOUBLE_CLASS, mxCOMPLEX);bool b = a.IsComplex();
等于(mwArray& arr) const
描述
返回真正的
如果输入数组按字节顺序与此数组相等。此方法对底层数组进行逐字节比较。因此,应该比较相同类型的数组。不同类型的数组通常不会相等,即使它们使用相同的数据初始化。
参数
mwArray&加勒比海盗 |
要与Array进行比较的数组。 |
例子
mwArray a(1,1, mxDOUBLE_CLASS);mwArray b(1,1, mxDOUBLE_CLASS);A = 1.0;B = 1.0;bool c = a = (b);
const mwArray& arr
描述
将此数组与指定数组进行排序比较。此方法对底层数组进行逐字节比较。因此,应该比较相同类型的数组。不同类型的数组通常不会被等价地排序,即使它们是用相同的数据初始化的。
参数
mwArray&加勒比海盗 |
要与Array进行比较的数组。 |
例子
mwArray a(1,1, mxDOUBLE_CLASS);mwArray b(1,1, mxDOUBLE_CLASS);A = 1.0;B = 1.0;compareto (b);
int HashCode() const
描述
从数组中的底层字节构造惟一的哈希值。因此,不同类型的数组将具有不同的哈希码,即使它们是用相同的数据初始化的。
例子
mwArray a(1,1, mxDOUBLE_CLASS);int n = a.HashCode();
mwString ToString() const
描述
返回基础数组的字符串表示形式。返回的字符串与在MATLAB命令提示符中输入变量名返回的字符串相同。
例子
mwArray a(1,1, mxDOUBLE_CLASS, mxCOMPLEX);a.Real() = 1.0;a.Imag() = 2.0;printf("%s\n", (const char*)(a.ToString())));
mwArray RowIndex() const
描述
返回一个数组,表示该数组元素的行索引(第一维),以列为主序排列。对于稀疏数组,仅为非零元素返回索引,并且返回的数组大小为1 × -NumberOfNonZeros ()
。对于非稀疏数组,返回的数组大小为1 × -NumberOfElements ()
,并返回所有元素的行索引。
例子
#includemwArray a(1,1, mxDOUBLE_CLASS);mwArray rows = a.RowIndex();
mwArray ColumnIndex() const
描述
返回一个数组,该数组以列为主序表示该数组元素的列下标(二维)。对于稀疏数组,仅为非零元素返回索引,并且返回的数组大小为1 × -NumberOfNonZeros ()
。对于非稀疏数组,返回的数组大小为1 × -NumberOfElements ()
,并返回所有元素的列索引。
例子
mwArray a(1,1, mxDOUBLE_CLASS);mwArray rows = a.ColumnIndex();
空白MakeComplex ()
描述
转换先前分配为的数值数组真正的
来复杂的
。如果基础数组是非数字类型的,则mwException
抛出。
例子
Double rdata[4] = {1.0, 2.0, 3.0, 4.0};双数据[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);
获取mwSize num_indexes,…
描述
获取指定索引处的单个元素。传递索引的数量,后面是一个以逗号分隔的基于1的索引列表。可以传入的有效索引数量是1(单下标索引)或NumberOfDimensions ()
(多个下标索引)。在单下标索引中,返回指定的基于1的偏移量的元素,并按列主序访问数据。在多下标索引中,索引列表用于访问指定的元素。索引的有效范围是1 <= index <= NumberOfElements()
,用于单下标索引。对于多个下标索引,使用
索引的有效范围:我
1 <= index[i] <= GetDimensions()。Get(我)
。一个mwException
如果传入的索引数无效或任何索引越界,则引发。
参数
mwSize num_indices |
传入的索引数 |
… |
逗号分隔的输入索引列表。项目数量必须相等num_indices 但不应超过32。 |
例子
双数据[4]= {1.0,2.0,3.0,4.0};双x;mwArray a(2,2, mxDOUBLE_CLASS);a.SetData(数据,4);x = a.Get(1,1);x = a.Get(2,1,2);x = a.Get(2,2,2);
mwArray获取(const char* name, mwSize num_indexes,…)
描述
获取指定字段名和索引处的单个元素。此方法只能在类型为的数组上调用mxSTRUCT_CLASS
。一个mwException
如果底层数组不是结构体
数组中。中传递的字段名必须是有效的字段名结构体
数组中。在传递索引时,首先传递索引的数量,然后是一个以逗号分隔的基于1的索引列表。可以传入的有效索引数量是1(单下标索引)或NumberOfDimensions ()
(多个下标索引)。在单下标索引中,返回指定的基于1的偏移量的元素,按列顺序访问数据。在多下标索引中,索引列表用于访问指定的元素。索引的有效范围是1 <= index <= NumberOfElements()
,用于单下标索引。对于多个下标索引,第i索引具有有效范围:1 <= index[i] <= GetDimensions()。Get(我)
。一个mwException
如果传入的索引数无效或任何索引越界,则引发。
参数
char *的名字 |
包含字段名称的以空结束的字符缓冲区 |
mwSize num_indices |
传入的索引数 |
… |
逗号分隔的输入索引列表。项目数量必须相等num_indices 但不应超过32。 |
例子
Const 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);
获取mwSize num_indexes, const mwIndex* index
描述
获取指定索引处的单个元素。在传递索引时,首先传递索引的数量,然后是一个基于1的索引数组。可以传入的有效索引数量是1(单下标索引)或NumberOfDimensions ()
(多个下标索引)。在单下标索引中,返回指定的基于1的偏移量的元素,按列顺序访问数据。在多下标索引中,索引列表用于访问指定的元素。索引的有效范围是1 <= index <= NumberOfElements()
,用于单下标索引。对于多个下标索引,第i索引具有有效范围:1 <= index[i] <= GetDimensions()。Get(我)
。一个mwException
如果传入的索引数无效或任何索引越界,则引发。
参数
mwSize num_indices |
索引数组的大小 |
mwIndex *指数 |
最少大小的数组num_indices 包含索引 |
例子
双数据[4]= {1.0,2.0,3.0,4.0};Int索引[2]= {1,1};双x;mwArray a(2,2, mxDOUBLE_CLASS);a.SetData(数据,4);x = a.Get(1, index);x = a.Get(2, index);指数[0]= 2;指数[1]= 2;x = a.Get(2, index);
mwArray Get(const char* name, mwSize num_indexes, const mwIndex* index)
描述
获取指定字段名和索引处的单个元素。此方法只能在类型为的数组上调用mxSTRUCT_CLASS
。一个mwException
如果底层数组不是结构体
数组中。中传递的字段名必须是有效的字段名结构体
数组中。在传递索引时,首先传递索引的数量,然后是一个基于1的索引数组。可以传入的有效索引数量是1(单下标索引)或NumberOfDimensions ()
(多个下标索引)。在单下标索引中,返回指定的基于1的偏移量的元素,按列顺序访问数据。在多下标索引中,索引列表用于访问指定的元素。索引的有效范围是1 <= index <= NumberOfElements()
,用于单下标索引。对于多个下标索引,第i索引具有有效范围:1 <= index[i] <= GetDimensions()。Get(我)
。一个mwException
如果传入的索引数无效或任何索引越界,则引发。
参数
char *的名字 |
包含字段名称的以空结束的字符缓冲区 |
mwSize num_indices |
传入的索引数 |
mwIndex *指数 |
最少大小的数组num_indices 包含索引 |
例子
Const char* fields[] = {"a", "b", "c"};Int索引[2]= {1,1};mwArray a(1,1,3, fields);mwArray b = a. get ("a", 1, index);mwArray b = a.Get("b", 2, index);
mwArray真正的()
描述
访问一个复杂数组的实部。返回的mwArray
被认为是真实的,具有与原始的相同的维度和类型。
复数组由复数组成,复数是1 × 2向量(对)。例如,如果数字是3 + 5
,则配对为(3、5我)
。因此复数数组是二维的(n除以2)
,在那里N数组中复数的个数。2+4i 7-3i 8+6i
将表示为(2,4i) (7,3i) (8,6i)
。复数有两个分量,实数和虚数。
例子
Double rdata[4] = {1.0, 2.0, 3.0, 4.0};双数据[4]= {10.0,20.0,30.0,40.0};mwArray a(2,2, mxDOUBLE_CLASS, mxCOMPLEX);a.Real()。SetData (rdata 4);
mwArray图像放大()
描述
访问复杂数组的虚部。返回的mwArray
被认为是真实的,具有与原始的相同的维度和类型。
复数组由复数组成,复数是1 × 2向量(对)。例如,如果数字是3 + 5
,则配对为(3、5我)
。因此复数数组是二维的(n除以2)
,在那里N数组中复数的个数。2+4i 7-3i 8+6i
将表示为(2,4i) (7,3i) (8,6i)
。复数有两个分量,实数和虚数。
例子
Double rdata[4] = {1.0, 2.0, 3.0, 4.0};双数据[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)
描述
为类型的数组将输入数组的共享副本分配给当前引用的单元格mxCELL_CLASS
和mxSTRUCT_CLASS
。
参数
mwArray&加勒比海盗 |
mwArray 赋值给当前引用的单元格 |
例子
mwArray a(2,2, mxDOUBLE_CLASS);mwArray b(2,2, mxINT16_CLASS);mwArray c(1,2, mxCELL_CLASS);c.Get(1, 1)这里(一个);c.Get(1、2)这里(b);
GetData(<数值类型>* buffer, mwSize len
描述
将数组的数据复制到提供的数值缓冲区中。
数据按列-主顺序复制。如果底层数组与输入缓冲区的类型不同,则在复制数据时将数据转换为该类型。如果不能进行转换,则mwException
抛出。
参数
<数值类型> *缓冲区 |
缓冲区接收副本。有效类型为<数值类型> 是:
|
mwSize len |
缓冲区的最大长度。最多为len 元素将被复制。 |
例子
Double rdata[4] = {1.0, 2.0, 3.0, 4.0};双数据拷贝[4];mwArray a(2,2, mxDOUBLE_CLASS);a.SetData (rdata 4);a.GetData (data_copy 4);
GetLogicalData(mxLogical* buffer, mwSize len
描述
将数组的数据复制到提供的数组中mxLogical
缓冲区。
数据按列-主顺序复制。如果基础数组不是类型mxLOGICAL_CLASS
时,数据在复制时转换为这种类型。如果不能进行转换,则mwException
抛出。
参数
mxLogical *缓冲 |
接收副本的缓冲区 |
mwSize len |
缓冲区的最大长度。最多为len 元素将被复制。 |
例子
mxLogical data[4] = {true, false, true, false};mxLogical data_copy[4];mwArray a(2,2, mxLOGICAL_CLASS);a.SetLogicalData(数据,4);a.GetLogicalData (data_copy 4);
GetCharData(mxChar* buffer, mwSize len
描述
将数组的数据复制到提供的数组中mxChar
缓冲区。
数据按列-主顺序复制。如果基础数组不是类型mxCHAR_CLASS
时,数据在复制时转换为这种类型。如果不能进行转换,则mwException
抛出。
参数
mxChar * *缓冲 |
接收副本的缓冲区 |
mwSize len |
缓冲区的最大长度。最多为len 元素将被复制。 |
例子
mxChar数据[6]= {' H ', ' e ', ' l ', ' l ', ' o ', ' \ 0};mxChar data_copy[6];mwArray a(1,6, mxCHAR_CLASS);a.SetCharData(数据,6);a.GetCharData (data_copy 6);
SetData(<数值类型>* buffer, mwSize len)
描述
将数据从提供的数值缓冲区复制到数组中。
数据按列-主顺序复制。如果底层数组与输入缓冲区的类型不同,则在复制数据时将数据转换为该类型。如果不能进行转换,则mwException
抛出。
参数
<数值类型> *缓冲区 |
包含要复制的数据的缓冲区。有效类型为<数值类型> 是:
|
mwSize len |
缓冲区的最大长度。最多为len 元素将被复制。 |
例子
Double rdata[4] = {1.0, 2.0, 3.0, 4.0};双数据拷贝[4];mwArray a(2,2, mxDOUBLE_CLASS);a.SetData (rdata 4);a.GetData (data_copy 4);
SetLogicalData(mxLogical* buffer, mwSize len)
描述
从提供的对象复制数据mxLogical
缓冲到数组中。
数据按列-主顺序复制。如果基础数组不是类型mxLOGICAL_CLASS
时,数据在复制时转换为这种类型。如果不能进行转换,则mwException
抛出。
参数
mxLogical *缓冲 |
包含要复制的数据的缓冲区 |
mwSize len |
缓冲区的最大长度。最多为len 元素将被复制。 |
例子
mxLogical data[4] = {true, false, true, false};mxLogical data_copy[4];mwArray a(2,2, mxLOGICAL_CLASS);a.SetLogicalData(数据,4);a.GetLogicalData (data_copy 4);
SetCharData(mxChar* buffer, mwSize len)
描述
从提供的对象复制数据mxChar
缓冲到数组中。
数据按列-主顺序复制。如果基础数组不是类型mxCHAR_CLASS
时,数据在复制时转换为这种类型。如果不能进行转换,则mwException
抛出。
参数
mxChar * *缓冲 |
包含要复制的数据的缓冲区 |
mwSize len |
缓冲区的最大长度。最多为len 元素将被复制。 |
例子
mxChar数据[6]= {' H ', ' e ', ' l ', ' l ', ' o ', ' \ 0};mxChar data_copy[6];mwArray a(1,6, mxCHAR_CLASS);a.SetCharData(数据,6);a.GetCharData (data_copy 6);
mwArray反序列化(const mwArray& arr)
描述
反序列化已被序列化的数组mwArray:序列化()
。输入数组必须是类型mxUINT8_CLASS
并包含来自序列化数组的数据。如果输入的数据不表示序列化mwArray
,此方法的行为是未定义的。
参数
mwArray&加勒比海盗 |
mwArray 这是通过调用得到的mwArray:序列化 |
例子
Double rdata[4] = {1.0, 2.0, 3.0, 4.0};mwArray (1, 4, mxDOUBLE_CLASS);a.SetData (rdata 4);mwArray b = a.Serialize();a = mwArray::反序列化(b);
静态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)
描述
创建真正的类型稀疏矩阵双
指定行数和列数。
输入行、列索引和数据数组的长度都必须等于或等于1。在这些数组中的任何一个等于1的情况下,该值将在整个矩阵构造过程中重复。
如果相同的行/列对出现多次,则分配给该元素的数据值是与该行/列对相关的所有值的和。的任何元素rowindex
或colindex
中的指定值num_rows
或num_cols
分别抛出一个异常。
参数
mwSize rowindex_size |
的大小rowindex 数组 |
mwIndex * rowindex |
非零元素的行索引数组 |
mwSize colindex_size |
的大小colindex 数组 |
mwIndex * colindex |
非零元素的列索引数组 |
mwSize data_size |
数据数组的大小 |
mxDouble * rdata |
与非零的行和列索引相关联的数据 |
mwSize num_rows |
矩阵中的行数 |
mwSize num_cols |
矩阵中的列数 |
mwSize nzmax |
为稀疏矩阵预留存储空间。如果nzmax 是零,存储将设置为最大{rowindex_size, colindex_size, data_size} 。 |
例子
这个例子构造了一个稀疏的4 × 4三对角矩阵:
2 -1 0 0 -1 2 -1 0 -1 2 -1 0 0 -1 2
下面的代码,当运行时:
双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,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;
将在屏幕上显示以下输出:
(1,1) 2(2, 1) 1(1、2)1(2,2)2(2)1(2、3)1(3、3)2 (4,3)1 (3,4)1 (4,4)2
静态mwArray NewSparse(mwSize rowindex_size, const mwIndex* rowindex, mwSize colindex_size, const mwIndex* colindex, mwSize data_size, const mxDouble* rdata, mwSize nzmax)
描述
创建真正的类型稀疏矩阵双
从输入数据推断的行数和列数。
输入的行、列索引和数据数组的长度必须全部相同或等于1。在这些数组中的任何一个等于1的情况下,这个值在整个矩阵的构造过程中都是重复的。
如果相同的行/列对出现多次,则分配给该元素的数据值是与该行/列对相关的所有值的和。根据输入计算创建的矩阵中的行数和列数rowindex
和colindex
数组作为Num_rows = max{rowindex}, num_cols = max{colindex}
。
参数
mwSize rowindex_size |
的大小rowindex 数组 |
mwIndex * rowindex |
非零元素的行索引数组 |
mwSize colindex_size |
的大小colindex 数组 |
mwIndex * colindex |
非零元素的列索引数组 |
mwSize data_size |
数据数组的大小 |
mxDouble * rdata |
与非零的行和列索引相关联的数据 |
mwSize nzmax |
为稀疏矩阵预留存储空间。如果nzmax 是零,存储将设置为最大{rowindex_size, colindex_size, data_size} 。 |
例子
在这个例子中,我们构造了一个稀疏的4 × 4单位矩阵。1.0的值被复制到行和列索引数组定义的每个非零元素:
双1 = 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) 1
静态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)
描述
创建类型的复杂稀疏矩阵双
指定行数和列数。
输入的行、列索引和数据数组的长度必须全部相同或等于1。在这些数组中的任何一个等于1的情况下,这个值在整个矩阵的构造过程中都是重复的。
如果相同的行/列对出现多次,则分配给该元素的数据值是与该行/列对相关的所有值的和。的任何元素rowindex
或colindex
中的指定值num_rows
,num_cols
,则抛出异常。
参数
mwSize rowindex_size |
的大小rowindex 数组 |
mwIndex * rowindex |
非零元素的行索引数组 |
mwSize colindex_size |
的大小colindex 数组 |
mwIndex * colindex |
非零元素的列索引数组 |
mwSize data_size |
数据数组的大小 |
mxDouble * rdata |
与非零的行和列索引相关的数据的实部 |
mxDouble * idata |
与非零的行和列索引相关联的数据的虚部 |
mwSize num_rows |
矩阵中的行数 |
mwSize num_cols |
矩阵中的列数 |
mwSize nzmax |
为稀疏矩阵预留存储空间。如果nzmax 是零,存储将设置为最大{rowindex_size, colindex_size, data_size} 。 |
例子
这个例子构造了一个复杂的三对角矩阵:
双rdata [] = {2.0, -1.0, -1.0, 2.0, -1.0, -1.0, 2.0, -1.0, -1.0, 2.0};双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,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;
它在屏幕上显示如下输出:
(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 (3,4) -1.0000 -10.0000i (4,4) 2.0000 +20.0000i
静态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)
描述
创建类型的复杂稀疏矩阵双
从输入数据推断的行数和列数。
输入的行、列索引和数据数组的长度必须全部相同或等于1。在这些数组中的任何一个等于1的情况下,这个值在整个矩阵的构造过程中都是重复的。
如果相同的行/列对出现多次,则分配给该元素的数据值是与该行/列对相关的所有值的和。创建的矩阵中的行数和列数是从输入中计算出来的rowindex
和colindex
数组作为Num_rows = max{rowindex}, num_cols = max{colindex}
。
参数
mwSize rowindex_size |
的大小rowindex 数组 |
mwIndex * rowindex |
非零元素的行索引数组 |
mwSize colindex_size |
的大小colindex 数组 |
mwIndex * colindex |
非零元素的列索引数组 |
mwSize data_size |
数据数组的大小 |
mxDouble * rdata |
与非零的行和列索引相关的数据的实部 |
mxDouble * idata |
与非零的行和列索引相关联的数据的虚部 |
mwSize nzmax |
为稀疏矩阵预留存储空间。如果nzmax 是零,存储将设置为最大{rowindex_size, colindex_size, data_size} 。 |
例子
这个示例通过从输入数据推断维度和存储分配来构造一个复杂矩阵。
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 (3,4) -1.0000 -10.0000i (4,4) 2.0000 +20.0000i
静态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)
描述
创建具有指定行和列数的逻辑稀疏矩阵。
输入的行、列索引和数据数组的长度必须全部相同或等于1。在这些数组中的任何一个等于1的情况下,该值将在整个矩阵构造过程中重复。
如果相同的行/列对出现多次,则分配给该元素的数据值是与该行/列对相关的所有值的和。的任何元素rowindex
或colindex
中的指定值num_rows
,num_cols
,则抛出异常。
参数
mwSize rowindex_size |
的大小rowindex 数组 |
mwIndex * rowindex |
非零元素的行索引数组 |
mwSize colindex_size |
的大小colindex 数组 |
mwIndex * colindex |
非零元素的列索引数组 |
mwSize data_size |
数据数组的大小 |
mxLogical * rdata |
与非零的行和列索引相关联的数据 |
mwSize num_rows |
矩阵中的行数 |
mwSize num_cols |
矩阵中的列数 |
mwSize nzmax |
为稀疏矩阵预留存储空间。如果nzmax 是零,存储将设置为最大{rowindex_size, colindex_size, data_size} 。 |
例子
这个例子创建了一个稀疏的4 × 4逻辑三对角矩阵,赋值真正的
对每个非零值:
mxLogical one = true;mwIndex row_tridiag[] = {1,2,1,2,3,2,3,4,3,4};mwIndex col_tridiag[] = {1,1,2,2,2,2,3,3,3,4,4};mwArray mysparse = mwArray::NewSparse(10, row_tridiag, 10, col_tridiag, 1, & 1,4,4,10);Std::cout << mysparse << Std::endl;(1,1) 1(2, 1) 1(1、2)1(2,2)1(2)1(2、3)1(3、3)1 (4,3)1 (3,4)1 (4,4)1
静态mwArray NewSparse(mwSize rowindex_size, const mwIndex* rowindex, mwSize colindex_size, const mwIndex* colindex, mwSize data_size, const mxLogical* rdata, mwSize nzmax)
描述
创建逻辑稀疏矩阵,其中包含从输入数据推断出的行数和列数。
输入的行、列索引和数据数组的长度必须全部相同或等于1。在这些数组中的任何一个等于1的情况下,这个值在整个矩阵的构造过程中都是重复的。
创建的矩阵中的行数和列数是从输入中计算出来的rowindex
和colindex
数组作为Num_rows = Max {rowindex}, num_cols = Max {colindex}
。
参数
mwSize rowindex_size |
的大小rowindex 数组 |
mwIndex * rowindex |
非零元素的行索引数组 |
mwSize colindex_size |
的大小colindex 数组 |
mwIndex * colindex |
非零元素的列索引数组 |
mwSize data_size |
数据数组的大小 |
mxLogical * rdata |
与非零的行和列索引相关联的数据 |
mwSize nzmax |
为稀疏矩阵预留存储空间。如果nzmax 是零,存储将设置为最大{rowindex_size, colindex_size, data_size} 。 |
例子
这个例子使用了第一个例子中的数据,但是允许从输入数据中计算行数、列数和分配的存储空间:
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(2)1(2、3)1(3、3)1 (4,3)1 (3,4)1 (4,4)1
静态mwArray NewSparse (mwSize num_rows, mwSize num_cols, mwSize nzmax, mxClassID mxID, mxComplexity cmplx = mxREAL)
描述
创建一个空的稀疏矩阵。空稀疏矩阵中的所有元素最初都为零,为非零元素分配的存储量由nzmax
。
参数
mwSize num_rows |
矩阵中的行数 |
mwSize num_cols |
矩阵中的列数 |
mwSize nzmax |
为稀疏矩阵预留存储空间 |
mxClassID mxID |
存储在矩阵中的数据类型。目前,稀疏矩阵的类型双 精度和逻辑 都受支持金宝app。通过mxDOUBLE_CLASS 要创建双 精度稀疏矩阵。通过mxLOGICAL_CLASS 要创建逻辑 稀疏矩阵。 |
mxComplexity cmplx |
矩阵的复杂度。通过mxCOMPLEX 要创建复杂的 稀疏矩阵和mxREAL 要创建真正的 稀疏矩阵。此参数可以省略,在这种情况下,默认复杂度为真正的 |
例子
这个示例构造了一个类型为3 × 3的实空稀疏矩阵双
预留存储4个非零元素:
mwArray mysparse = mwArray::NewSparse (3,3,4, mxDOUBLE_CLASS);Std::cout << mysparse << Std::endl;全零稀疏:3 × 3
静态双GetNaN()
描述
获得价值南
(不是一个数字)。
调用mwArray: GetNaN
返回的值南
对于你的系统。南
为非数字的IEEE算术表示。某些数学运算返回南
结果,例如:
0.0/0.0
Inf-Inf
的价值南
是系统内建的;你不能修改它。
例子
double x = mwArray::GetNaN();
静态双GetEps()
描述
返回MATLAB的值每股收益
变量。这个变量是从1.0到下一个最大浮点数的距离。因此,它是浮点精度的度量。MATLABpinv
和排名
函数使用每股收益
作为默认容差。
例子
double x = mwArray::GetEps();
GetInf()
描述
返回MATLAB内部的值正
变量。正
是表示IEEE算术正无穷大的永久变量。的价值正
是系统内建的;你不能修改它。
返回的操作正
包括
除以0。例如,5/0返回
正
。导致溢出的操作。例如,
exp (10000)
返回正
因为结果太大,无法在您的机器上表示。
例子
double x = mwArray::GetInf();
IsFinite(double x)
描述
确定一个值是否是有限的。一个数大于则为有限数负
小于正
。
参数
双x染色体 |
价值测试的有限性 |
例子
bool x = mwArray::IsFinite(1.0);
IsInf(double x)
描述
确定一个值是否等于正无穷或负无穷。MATLAB将无穷大的值存储在一个名为正
,表示IEEE算术正无穷大。变量的值,正
,是系统内建的;你不能修改它。
返回无穷大的操作包括
除以0。例如,5/0返回无穷。
导致溢出的操作。例如,
exp (10000)
返回无穷大,因为结果太大,无法在您的机器上表示。如果值等于南
(不是一个数字),然后mxIsInf
返回假
。换句话说,南
不等于无穷。
参数
双x染色体 |
值来测试是否无穷大 |
例子
mwArray::IsInf(1.0);
静态bool IsNaN(double x)
描述
确定值是否为南
。南
为非数字的IEEE算术表示。南
作为数学上未定义的操作的结果,例如
0.0/0.0
Inf-Inf
系统理解一组位模式作为表示南
。换句话说,南
不是一个单一的值,而是MATLAB软件(和其他符合ieee标准的应用程序)用来表示错误条件或缺失数据的一组数字。
参数
双x染色体 |
要测试的值南 |
例子
bool x = mwArray::IsNaN(1.0);
运营商
mwArray operator()(mwIndex i1, mwIndex i2, mwIndex i3,…,)
描述
获取指定索引处的单个元素。索引以逗号分隔的基于1的索引列表传递。这个运算符被重载以支持1到32个索引。金宝app可以传入的有效索引数量是1(单下标索引)或NumberOfDimensions ()
(多个下标索引)。在单下标索引中,返回指定的基于1的偏移量的元素,按列顺序访问数据。在多下标索引中,索引列表用于访问指定的元素。索引的有效范围是1 <= index <= NumberOfElements()
,用于单下标索引。对于多个下标索引,第i索引具有有效范围:1 <= index[i] <= GetDimensions()。Get(我)
。一个mwException
如果传入的索引数无效或任何索引越界,则引发。
参数
mwIndex i1, mwIndex i2, mwIndex i3,… |
逗号分隔的输入索引列表 |
例子
双数据[4]= {1.0,2.0,3.0,4.0};双x;mwArray a(2,2, mxDOUBLE_CLASS);a.SetData(数据,4);X = a(1,1);X = a(1,2);X = a(2,2);
mwArray运算符()(const char* name, mwIndex i1, mwIndex i2, mwIndex i3,…,)
描述
获取指定字段名和索引处的单个元素。此方法只能在类型为的数组上调用mxSTRUCT_CLASS
。一个mwException
如果底层数组不是结构体
数组中。中传递的字段名必须是有效的字段名结构体
数组中。在传递索引时,首先传递索引的数量,然后是一个基于1的索引数组。这个运算符被重载以支持1到32个索引。金宝app可以传入的有效索引数量是1(单下标索引)或NumberOfDimensions ()
(多个下标索引)。在单下标索引中,返回指定的基于1的偏移量的元素,按列顺序访问数据。在多下标索引中,索引列表用于访问指定的元素。索引的有效范围是1 <= index <= NumberOfElements()
,用于单下标索引。对于多个下标索引,第i索引具有有效范围:1 <= index[i] <= GetDimensions()。Get(我)
。一个mwException
如果传入的索引数无效或任何索引越界,则引发。
参数
char *的名字 |
包含要获取的字段名的空终止字符串 |
mwIndex i1, mwIndex i2, mwIndex i3,… |
逗号分隔的输入索引列表 |
例子
Const char* fields[] = {"a", "b", "c"};Int索引[2]= {1,1};mwArray a(1,1,3, fields);mwArray b = a("a", 1,1);mwArray b = a("b", 1,1);
mwArray& operator=(const & x)
描述
设置单个标量值。此运算符对所有数字和逻辑类型都重载。
参数
Const <类型>& x |
要分配的值 |
例子
mwArray a(2,2, mxDOUBLE_CLASS);A (1,1) = 1.0;A (1,2) = 2.0;A (2,1) = 3.0;A (2,2) = 4.0;
const mwArray operator()(mwIndex i1, mwIndex i2, mwIndex i3,…,) const
描述
获取单个标量值。此运算符对所有数字和逻辑类型都重载。
参数
mwIndex i1, mwIndex i2, mwIndex i3,… |
逗号分隔的输入索引列表 |
例子
双数据[4]= {1.0,2.0,3.0,4.0};双x;mwArray a(2,2, mxDOUBLE_CLASS);a.SetData(数据,4);X = (double)a(1,1);X = (double)a(1,2);X = (double)a(2,1);X = (double)a(2,2);
std::ostream::operator<<(const mwArray &)
描述
写mwArray
输出流。输出的格式与在MATLAB命令提示符下输入变量名时的输出相同。看到ToString ()
。