文档

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 创建数组的复杂性。有效值为mxREALmxCOMPLEX。默认值为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 创建数组的复杂性。有效值为mxREALmxCOMPLEX。默认值为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(<类型>重新)

描述

创建一个实标量数组。

使用输入参数的类型创建标量数组。

参数

<类型>再保险 标量值初始化数组。<类型>可以是以下任意一个:
  • mxDouble

  • mxSingle

  • mxInt8

  • mxUint8

  • mxInt16

  • mxUint16

  • mxInt32

  • mxUint32

  • mxInt64

  • mxUint64

  • mxLogical

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 (),并返回所有元素的行索引。

例子

#include  mwArray 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_CLASSmxSTRUCT_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抛出。

参数

<数值类型> *缓冲区 缓冲区接收副本。有效类型为<数值类型>是:
  • mxDOUBLE_CLASS

  • mxSINGLE_CLASS

  • mxINT8_CLASS

  • mxUINT8_CLASS

  • mxINT16_CLASS

  • mxUINT16_CLASS

  • mxINT32_CLASS

  • mxUINT32_CLASS

  • mxINT64_CLASS

  • mxUINT64_CLASS

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抛出。

参数

<数值类型> *缓冲区 包含要复制的数据的缓冲区。有效类型为<数值类型>是:
  • mxDOUBLE_CLASS

  • mxSINGLE_CLASS

  • mxINT8_CLASS

  • mxUINT8_CLASS

  • mxINT16_CLASS

  • mxUINT16_CLASS

  • mxINT32_CLASS

  • mxUINT32_CLASS

  • mxINT64_CLASS

  • mxUINT64_CLASS

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的情况下,该值将在整个矩阵构造过程中重复。

如果相同的行/列对出现多次,则分配给该元素的数据值是与该行/列对相关的所有值的和。的任何元素rowindexcolindex中的指定值num_rowsnum_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的情况下,这个值在整个矩阵的构造过程中都是重复的。

如果相同的行/列对出现多次,则分配给该元素的数据值是与该行/列对相关的所有值的和。根据输入计算创建的矩阵中的行数和列数rowindexcolindex数组作为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的情况下,这个值在整个矩阵的构造过程中都是重复的。

如果相同的行/列对出现多次,则分配给该元素的数据值是与该行/列对相关的所有值的和。的任何元素rowindexcolindex中的指定值num_rowsnum_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的情况下,这个值在整个矩阵的构造过程中都是重复的。

如果相同的行/列对出现多次,则分配给该元素的数据值是与该行/列对相关的所有值的和。创建的矩阵中的行数和列数是从输入中计算出来的rowindexcolindex数组作为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的情况下,该值将在整个矩阵构造过程中重复。

如果相同的行/列对出现多次,则分配给该元素的数据值是与该行/列对相关的所有值的和。的任何元素rowindexcolindex中的指定值num_rowsnum_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的情况下,这个值在整个矩阵的构造过程中都是重复的。

创建的矩阵中的行数和列数是从输入中计算出来的rowindexcolindex数组作为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 ()

在R2013b中引入

这个话题有用吗?