exponenta event banner

mwArray

Класс, используемый для передачи входных/выходных аргументов функциям C++, сгенерированным SDK компилятора MATLAB

Описание

Используйте mwArray класс для передачи входных/выходных аргументов сгенерированным функциям интерфейса C++. Этот класс состоит из тонкой оболочки вокруг массива MATLAB ®. Все данные в MATLAB представлены массивами. mwArray класс предоставляет необходимые конструкторы, методы и операторы для создания и инициализации массива, а также простую индексацию.

Примечание

Арифметические операторы, такие как сложение и вычитание, больше не поддерживаются начиная с версии 14.

Обязательные заголовки

  • mclcppclass.h

  • mclmcrrt.h

Совет

Компилятор MATLAB SDK™ автоматически включает эти файлы заголовка в файл заголовка, созданный для функций MATLAB.

Конструкторы

mwArray ()

Описание

Построение пустого массива типа mxDOUBLE_CLASS.

mwArray (mxClassID mxID

)
Описание

Построение пустого массива указанного типа.

Аргументы
mxClassID mxIDДействительный mxClassID указание типа создаваемого массива. Дополнительные сведения см. в разделе Работа с mxArrays mxClassID.

mwArray (mwSize num_rows, mwSize num_cols, mxClassID mxID, mxComplexity cmplx = mxREAL

)
Описание

Создайте матрицу 2-D указанного типа и сложности. Для нечисловых типов: mxComplexity будет игнорироваться. Для числовых типов передайте mxCOMPLEX для последнего аргумента для создания комплексной матрицы; в противном случае матрица будет действительной. Все элементы инициализированы как нулевые. Для матриц ячеек все элементы инициализируются в пустые ячейки.

Аргументы
mwSize num_rowsКоличество строк в массиве
mwSize num_colsКоличество столбцов в массиве
mxClassID mxIDДействительный mxClassID указание типа создаваемого массива. Дополнительные сведения см. в разделе Работа с mxArrays mxClassID.
mxComplexity cmplxСложность создаваемого массива. Допустимые значения: mxREAL и mxCOMPLEX. Значение по умолчанию: mxREAL.

mwArray (mwSize num_dims, const mwSize *, mxClassID mxID, mxComplexity cmplx = mxREAL

)
Описание

Создание n-мерный массив указанного типа и сложности. Для нечисловых типов: mxComplexity будет игнорироваться. Для числовых типов передайте mxCOMPLEX для последнего аргумента для создания комплексной матрицы; в противном случае массив будет реальным. Все элементы инициализированы как нулевые. Для массивов ячеек все элементы инициализируются в пустые ячейки.

Аргументы
mwSize num_dimsКоличество измерений в массиве
const mwSize* dimsРазмеры массива
mxClassID mxIDДействительный mxClassID указание типа создаваемого массива. Дополнительные сведения см. в разделе Работа с mxArrays mxClassID.
mxComplexity cmplxСложность создаваемого массива. Допустимые значения: mxREAL и mxCOMPLEX. Значение по умолчанию: mxREAL.

mwArray (const char * str

)
Описание

Создание 1-по-n массив типа mxCHAR_CLASS, с n = strlen(str)и инициализируйте данные массива символами в указанной строке.

Аргументы
const char* strБуфер символов со значением NULL, используемый для инициализации массива

mwArray (mwSize num_strings, const char * * str

)
Описание

Создание матрицы типа mxCHAR_CLASSи инициализируйте данные массива символами в предоставленных строках. Созданный массив имеет размеры mоколо-max, где m - количество строк и max - длина самой длинной строки в str.

Аргументы
mwSize num_stringsКоличество строк во входном массиве
const char** strМассив строк с нулевым окончанием

mwArray (mwSize num_rows, mwSize num_cols, int num_fields, имена полей const char * *

)
Описание

Создание матрицы типа mxSTRUCT_CLASS, с указанными именами полей. Все элементы инициализируются пустыми ячейками.

Аргументы
mwSize num_rowsКоличество строк в массиве
mwSize num_colsКоличество столбцов в массиве
int num_fieldsКоличество полей в struct матрица.
const char** fieldnamesМассив пустых завершенных строк, представляющих имена полей

mwArray (mwSize num_dims, const mwSize * dims, int num_fields, const char * * fieldnames

)
Описание

Создание n-мерный массив типа mxSTRUCT_CLASS, с указанными именами полей. Все элементы инициализируются пустыми ячейками.

Аргументы
mwSize num_dimsКоличество измерений в массиве
const mwSize* dimsРазмеры массива
int num_fieldsКоличество полей в struct матрица.
const char** fieldnamesМассив пустых завершенных строк, представляющих имена полей

mwArray (const mwArray & arr

)
Описание

Создание глубокой копии существующего массива.

Аргументы
mwArray& arrmwArray скопировать

mwArray (< тип >

re)
Описание

Создайте действительный скалярный массив.

Скалярный массив создается с типом входного аргумента.

Аргументы
<type> reСкалярное значение для инициализации массива. <type> может быть любым из следующих:
  • mxDouble

  • mxSingle

  • mxInt8

  • mxUint8

  • mxInt16

  • mxUint16

  • mxInt32

  • mxUint32

  • mxInt64

  • mxUint64

  • mxLogical

mwArray (< тип > re, < тип

> im)
Описание

Создайте сложный скалярный массив.

Скалярный массив создается с типом входного аргумента.

Аргументы
<type> reСкалярное значение для инициализации действительной части массива
<type> imСкалярное значение для инициализации мнимой части массива

<type> может быть любым из следующих:

  • 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

Описание

Сериализовать массив на байты. A 1-по-n числовая матрица типа mxUINT8_CLASS возвращается, содержащий сериализованные данные. Данные могут быть десериализованы обратно в исходное представление путем вызова mwArray::Deserialize().

Пример
mwArray a(2, 2, mxDOUBLE_CLASS);
mwArray b = a.Serialize();

mxClassID ClassID () const

Описание

Определите тип массива. Дополнительные сведения см. в разделе Работа с mxArrays mxClassID.

Пример
mwArray a(2, 2, mxDOUBLE_CLASS);
mxClassID id = a.ClassID();

size_t ElitySize () const

Описание

Определите размер элемента типа массива в байтах. Если массив сложен, возвращаемое значение будет представлять размер в байтах действительной части элемента.

Пример
mwArray a(2, 2, mxDOUBLE_CLASS);
int size = a.ElementSize();

mwSize NumberOfElements () const

Описание

Определите общий размер массива.

Пример
mwArray a(2, 2, mxDOUBLE_CLASS);
int n = a.NumberOfElements();

mwSize NumberOfNonZeros () const

Описание

Определите размер данных массива. Если базовый массив не разрежен, возвращается то же значение, что и NumberOfElements().

Пример
mwArray a(2, 2, mxDOUBLE_CLASS);
int n = a.NumberOfNonZeros();

mwSize MaximumNonZeros () const

Описание

Определите выделенный размер данных массива. Если базовый массив не разрежен, возвращается то же значение, что и NumberOfElements().

Пример
mwArray a(2, 2, mxDOUBLE_CLASS);
int n = a.MaximumNonZeros();

mwSize NumberOfDimensions () const

Описание

Определите размерность массива.

Пример
mwArray a(2, 2, mxDOUBLE_CLASS);
int n = a.NumberOfDimensions();

int NumberOfFields () const

Описание

Определение количества полей в struct массив. Если базовый массив не имеет типа struct, возвращается ноль.

Пример
const char* fields[] = {"a", "b", "c"};
mwArray a(2, 2, 3, fields);
int n = a.NumberOfFields();

mwString GetStartName (индекс int

)
Описание

Определение имени данного поля в struct массив. Если базовый массив не имеет типа struct, создается исключение.

Аргументы
int indexИндекс поля для имени. Индексирование начинается с нуля.
Пример
const char* fields[] = {"a", "b", "c"};
mwArray a(2, 2, 3, fields);
mwString tempname = a.GetFieldName(1);
const char* name = (const char*)tempname;

mwArray GetDimensions () const

Описание

Определите размер каждого измерения в массиве. Размер возвращаемого массива равен 1-by-NumberOfDimensions().

Пример
mwArray a(2, 2, mxDOUBLE_CLASS);
mwArray dims = a.GetDimensions();

bool IsEmpty () const

Описание

Определите, пуст ли массив.

Пример
mwArray a;
bool b = a.IsEmpty();

bool IsSparse () const

Описание

Определите, является ли массив разреженным.

Пример
mwArray a(2, 2, mxDOUBLE_CLASS);
bool b = a.IsSparse();

bool IsNumeric () const

Описание

Определите, является ли массив числовым.

Пример
mwArray a(2, 2, mxDOUBLE_CLASS);
bool b = a.IsNumeric();

bool IsComplex () const

Описание

Определите, является ли массив сложным.

Пример
mwArray a(2, 2, mxDOUBLE_CLASS, mxCOMPLEX);
bool b = a.IsComplex();

bool Equals (const mwArray & arr) const

Описание

Прибыль true если входной массив является байтовым, равным этому массиву. Этот метод выполняет побайтовое сравнение базовых массивов. Поэтому следует сравнивать массивы одного типа. Массивы разных типов в общем случае не будут равны, даже если они инициализированы одними и теми же данными.

Аргументы
mwArray& arrМассив для сравнения с массивом.
Пример
mwArray a(1, 1, mxDOUBLE_CLASS);
mwArray b(1, 1, mxDOUBLE_CLASS);
a = 1.0;
b = 1.0;
bool c = a.Equals(b);

int CompeyTo (const mwArray & arr) const

Описание

Сравнивает этот массив с указанным массивом для порядка. Этот метод выполняет побайтовое сравнение базовых массивов. Поэтому следует сравнивать массивы одного типа. Массивы различных типов, как правило, не упорядочиваются эквивалентно, даже если они инициализированы одними и теми же данными.

Аргументы
mwArray& arrМассив для сравнения с массивом.
Пример
mwArray a(1, 1, mxDOUBLE_CLASS);
mwArray b(1, 1, mxDOUBLE_CLASS);
a = 1.0;
b = 1.0;
int n = a.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-by-NumberOfNonZeros(). Для массивов без синтаксического анализа размер возвращаемого массива равен 1-by-NumberOfElements()и возвращаются индексы строк всех элементов.

Пример
#include <stdio.h>
mwArray a(1, 1, mxDOUBLE_CLASS);
mwArray rows = a.RowIndex();

mwArray ColumnIndex () const

Описание

Возвращает массив, представляющий индексы столбцов (второе измерение) элементов этого массива в порядке «» большой столбец «». Для разреженных массивов индексы возвращаются только для ненулевых элементов, а размер возвращаемого массива равен 1-by-NumberOfNonZeros(). Для массивов без синтаксического анализа размер возвращаемого массива равен 1-by-NumberOfElements()и возвращаются индексы столбцов всех элементов.

Пример
mwArray a(1, 1, mxDOUBLE_CLASS);
mwArray rows = a.ColumnIndex();

void MakeComplex ()

Описание

Преобразовать числовой массив, который ранее был выделен как real кому complex. Если базовый массив имеет нечисловой тип, mwException выбрасывается.

Пример
double 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,...)

Описание

Извлекает один элемент по заданному индексу. Количество индексов передается, за которым следует разделенный запятыми список индексов на основе 1. Допустимое число индексов, которые могут быть переданы, равно 1 (индексирование одного подстрочного индекса) или NumberOfDimensions() (индексирование нескольких подстрочных индексов). При индексировании одного подстрочного индекса возвращается элемент с указанным смещением на основе 1, получающий доступ к данным в основном порядке столбцов. При индексировании нескольких индексов индексный список используется для доступа к указанному элементу. Допустимый диапазон для индексов: 1 <= index <= NumberOfElements(), для индексации одного подстрочного индекса. Для индексирования нескольких подстрочных индексов ith индекс имеет допустимый диапазон: 1 <= index[i] <= GetDimensions().Get(1, i). Один mwException выдается, если передано недопустимое число индексов или если какой-либо индекс выходит за границы.

Аргументы
mwSize num_indicesКоличество переданных индексов
...Список входных индексов, разделенных запятыми. Количество элементов должно равняться num_indices но не должно превышать 32.
Пример
double 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,...)

Описание

Извлекает один элемент с указанным именем поля и индексом. Этот метод может быть вызван только для массива, который имеет тип mxSTRUCT_CLASS. Один mwException передается, если базовый массив не является struct массив. Переданное имя поля должно быть допустимым именем поля в struct массив. Индекс передается путем первого прохождения числа индексов, за которым следует разделенный запятыми список индексов на основе 1. Допустимое число индексов, которые могут быть переданы, равно 1 (индексирование одного подстрочного индекса) или NumberOfDimensions() (индексирование нескольких подстрочных индексов). При индексировании одного подстрочного индекса возвращается элемент с заданным смещением на основе 1, который обращается к данным в порядке столбцов. При индексировании нескольких индексов индексный список используется для доступа к указанному элементу. Допустимый диапазон для индексов: 1 <= index <= NumberOfElements(), для индексации одного подстрочного индекса. Для индексирования нескольких подстрочных индексов i-й индекс имеет допустимый диапазон: 1 <= index[i] <= GetDimensions().Get(1, i). Один mwException выдается, если передано недопустимое число индексов или если какой-либо индекс выходит за границы.

Аргументы
char* nameБуфер символов со значением NULL, содержащий имя поля
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);

mwArray Real ()

Описание

Доступ к действительной части сложного массива. Возвращенный mwArray считается действительным и имеет ту же размерность и тип, что и оригинал.

Комплексные массивы состоят из комплексных чисел, которые являются векторами (парами) 1 на 2. Например, если номер 3+5i, то пара (3,5i). Поэтому массив комплексных чисел является двумерным (N-by-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};
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 ()

Описание

Доступ к мнимой части сложного массива. Возвращенный mwArray считается действительным и имеет ту же размерность и тип, что и оригинал.

Комплексные массивы состоят из комплексных чисел, которые являются векторами (парами) 1 на 2. Например, если номер 3+5i, то пара (3,5i). Поэтому массив комплексных чисел является двумерным (N-by-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};
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

)
Описание

Назначение общей копии входного массива ячейке, на которую в данный момент имеется ссылка, для массивов типа mxCELL_CLASS и mxSTRUCT_CLASS.

Аргументы
mwArray& arrmwArray назначение текущей ссылочной ячейке
Пример
mwArray 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 (< числовой тип > * буфер, mwSize len) const

Описание

Копирует данные массива в предоставленный числовой буфер.

Данные копируются в основном порядке столбцов. Если базовый массив отличается от входного буфера, данные преобразуются в этот тип при копировании. Если преобразование не может быть выполнено, mwException выбрасывается.

Аргументы
<numeric-type>* bufferБуфер для получения копии. допустимые типы для <numeric-type> являются:
  • 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};
double data_copy[4] ;
mwArray a(2, 2, mxDOUBLE_CLASS);
a.SetData(rdata, 4);
a.GetData(data_copy, 4);

void GetLogicalData (буфер mxLogical *, mwSize len) const

Описание

Копирует данные массива в mxLogical буфер.

Данные копируются в основном порядке столбцов. Если базовый массив не имеет типа mxLOGICAL_CLASSданные преобразуются в этот тип при копировании. Если преобразование не может быть выполнено, mwException выбрасывается.

Аргументы
mxLogical* bufferБуфер для получения копии
mwSize lenМаксимальная длина буфера. Максимум len элементы будут скопированы.
Пример
mxLogical 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 *, mwSize len) const

Описание

Копирует данные массива в mxChar буфер.

Данные копируются в основном порядке столбцов. Если базовый массив не имеет типа mxCHAR_CLASSданные преобразуются в этот тип при копировании. Если преобразование не может быть выполнено, mwException выбрасывается.

Аргументы
mxChar** bufferБуфер для получения копии
mwSize lenМаксимальная длина буфера. Максимум len элементы будут скопированы.
Пример
mxChar data[6] = {'H', 'e' , `l' , 'l' , 'o' , '\0'};
mxChar data_copy[6] ;
mwArray a(1, 6, mxCHAR_CLASS);
a.SetCharData(data, 6);
a.GetCharData(data_copy, 6);

void SetData (< числовой тип > * буфер, mwSize

len)
Описание

Копирует данные из предоставленного числового буфера в массив.

Данные копируются в основном порядке столбцов. Если базовый массив отличается от входного буфера, данные преобразуются в этот тип при копировании. Если преобразование не может быть выполнено, mwException выбрасывается.

Вы не можете использовать SetData для динамического изменения размера mwArray.

Аргументы
<numeric-type>* bufferБуфер, содержащий копируемые данные. Допустимые типы для <numeric-type> являются:
  • 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};
double data_copy[4] ;
mwArray a(2, 2, mxDOUBLE_CLASS);
a.SetData(rdata, 4);
a.GetData(data_copy, 4);

void SetLogicalData (буфер mxLogical *, mwSize len

)
Описание

Копирует данные из предоставленного mxLogical буфер в массив.

Данные копируются в основном порядке столбцов. Если базовый массив не имеет типа mxLOGICAL_CLASSданные преобразуются в этот тип при копировании. Если преобразование не может быть выполнено, mwException выбрасывается.

Аргументы
mxLogical* bufferБуфер, содержащий данные для копирования
mwSize lenМаксимальная длина буфера. Максимум len элементы будут скопированы.
Пример
mxLogical 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 *, mwSize len

)
Описание

Копирует данные из предоставленного mxChar буфер в массив.

Данные копируются в основном порядке столбцов. Если базовый массив не имеет типа mxCHAR_CLASSданные преобразуются в этот тип при копировании. Если преобразование не может быть выполнено, mwException выбрасывается.

Аргументы
mxChar** bufferБуфер, содержащий данные для копирования
mwSize lenМаксимальная длина буфера. Максимум len элементы будут скопированы.
Пример
mxChar data[6] = {'H', 'e' , `l' , 'l' , 'o' , '\0'};
mxChar data_copy[6] ;
mwArray a(1, 6, mxCHAR_CLASS);
a.SetCharData(data, 6);
a.GetCharData(data_copy, 6);

статическая десериализация mwArray (const mwArray & arr

)
Описание

Десериализация массива, сериализованного с помощью mwArray::Serialize(). Входной массив должен иметь тип mxUINT8_CLASS и содержат данные из сериализованного массива. Если входные данные не представляют сериализованную mwArray, поведение этого метода не определено.

Аргументы
mwArray& arrmwArray которая была получена путем вызова mwArray::Serialize
Пример
double 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);

статический 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

)
Описание

Создание вещественной разреженной матрицы типа double с указанным количеством строк и столбцов.

Длины входных строк, индексов столбцов и массивов данных должны быть одинаковыми или равными 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 равно нулю, для хранилища будет установлено значение max{rowindex_size, colindex_size, data_size}.
Пример

Этот пример конструирует разреженную тридиагональную матрицу 4 на 4:

2 -1  0  0
-1  2 -1  0
0 -1  2 -1
0  0 -1  2

Следующий код при выполнении:

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;

выведет на экран следующие выходные данные:

 (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)        2

статический mwArray NewSparse (mwSize rowindex_size, const mwIndex * rowindex, mwSize colindex_size, const mwIndex * colindex, mwSize data_size, const mxDouble * rdata, mwSize nzmax

)
Описание

Создание вещественной разреженной матрицы типа double с количеством строк и столбцов, выведенных из входных данных.

Длины входных строк и столбцов индекса и массивов данных должны быть одинаковыми или равными 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 равно нулю, для хранилища будет установлено значение max{rowindex_size, colindex_size, data_size}.
Пример

В этом примере мы построим разреженную единичную матрицу 4 на 4. Значение 1,0 копируется в каждый ненулевой элемент, определенный массивами индексов строк и столбцов:

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)        1

статический mwArray NewSparse (mwSize rowindex_size, константа mwIndex* rowindex, mwSize colindex_size, константа mwIndex* colindex, mwSize data_size, константа mxDouble* rdata, константа mxDouble* idata, mwSize num_rows, mwSize num_cols, mwSize nzmax

)
Описание

Создание сложной разреженной матрицы типа double с указанным количеством строк и столбцов.

Длины входных строк и столбцов индекса и массивов данных должны быть одинаковыми или равными 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 равно нулю, для хранилища будет установлено значение max{rowindex_size, colindex_size, data_size}.
Пример

Этот пример конструирует сложную тридиагональную матрицу:

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;

На экране отображаются следующие выходные данные:

(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.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

)
Описание

Создание сложной разреженной матрицы типа double с количеством строк и столбцов, выведенных из входных данных.

Длины входных строк и столбцов индекса и массивов данных должны быть одинаковыми или равными 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 равно нулю, для хранилища будет установлено значение max{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
(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 равно нулю, для хранилища будет установлено значение max{rowindex_size, colindex_size, data_size}.
Пример

В этом примере создается разреженная логическая тридиагональная матрица 4 на 4, присваивающая true к каждому ненулевому значению:

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)        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 равно нулю, для хранилища будет установлено значение max{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
(3,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Тип данных для хранения в матрице. В настоящее время разреженные матрицы типа double точность и logical поддерживаются. Проход mxDOUBLE_CLASS для создания double прецизионная разреженная матрица. Проход mxLOGICAL_CLASS для создания logical разреженная матрица.
mxComplexity cmplxСложность матрицы. Проход mxCOMPLEX для создания complex разреженная матрица и mxREAL для создания real разреженная матрица. Этот аргумент может быть опущен, в этом случае сложность по умолчанию real
Пример

В этом примере создается действительная пустая разреженная матрица типа 3 на 3 double с зарезервированным хранилищем для 4 ненулевых элементов:

mwArray mysparse = mwArray::NewSparse
                (3, 3, 4, mxDOUBLE_CLASS);
std::cout << mysparse << std::endl;

All zero sparse: 3-by-3

статический двойной GetNaN ()

Описание

Получить значение NaN (Не-а-число).

Звонить mwArray::GetNaN для возврата значения NaN для вашей системы. NaN - арифметическое представление IEEE для Not-a-Number. Некоторые математические операции возвращаются NaN в результате, например:

  • 0.0/0.0

  • Inf-Inf

Значение NaN встроена в систему; изменить его нельзя.

Пример
double x = mwArray::GetNaN();

статический двойной GetEps ()

Описание

Возвращает значение MATLAB eps переменная. Эта переменная представляет собой расстояние от 1,0 до следующего наибольшего числа с плавающей запятой. Следовательно, это мера точности с плавающей запятой. MATLAB pinv и rank использование функций eps в качестве допуска по умолчанию.

Пример
double x = mwArray::GetEps();

статический двойной GetInf ()

Описание

Возвращает значение внутренней переменной MATLAB Inf переменная. Inf - постоянная переменная, представляющая арифметическую положительную бесконечность IEEE. Значение Inf встроен в систему; изменить его нельзя.

Операции, которые возвращаются Inf включать

  • Деление на 0. Например, 5/0 возвращает Inf.

  • Операции, приводящие к переполнению. Например, exp(10000) прибыль Inf потому что результат слишком велик для представления на компьютере.

Пример
double x = mwArray::GetInf();

статический bool IsFinite (двойной x

)
Описание

Определите, является ли значение конечным. Число является конечным, если оно больше -Inf и менее Inf.

Аргументы
double xЗначение для проверки на конечность
Пример
bool x = mwArray::IsFinite(1.0);

статический логический IsInf (двойной x

)
Описание

Определяет, равно ли значение бесконечности или минус бесконечности. MATLAB сохраняет значение бесконечности в постоянной переменной с именем Inf, которая представляет арифметическую положительную бесконечность IEEE. Значение переменной, Inf, встроен в систему; изменить его нельзя.

Операции, возвращающие бесконечность, включают

  • Деление на 0. Например, 5/0 возвращает бесконечность.

  • Операции, приводящие к переполнению. Например, exp(10000) возвращает бесконечность, поскольку результат слишком велик для представления на компьютере. Если значение равно NaN (Не-а-число), то mxIsInf прибыль false. Другими словами, NaN не равно бесконечности.

Аргументы
double xЦенность для проверки на бесконечность
Пример
bool x = mwArray::IsInf(1.0);

статический bool IsNaN (двойной x

)
Описание

Определяет, является ли значение NaN. NaN - арифметическое представление IEEE для Not-a-Number. NaN получается в результате математически неопределенных операций, таких как

  • 0.0/0.0

  • Inf-Inf

Система понимает семейство битовых шаблонов как представляющие NaN. Другими словами, NaN это не одно значение, а семейство чисел, которые программное обеспечение MATLAB (и другие приложения, совместимые с IEEE) использует для представления состояния ошибки или отсутствующих данных.

Аргументы
double xЗначение для проверки NaN
Пример
bool x = mwArray::IsNaN(1.0);

Операторы

оператор mwArray () (mwIndex i1, mwIndex i2, mwIndex i3,...,)

Описание

Извлекает один элемент по заданному индексу. Индекс передается в виде разделенного запятыми списка индексов на основе 1. Этот оператор перегружен для поддержки индексов от 1 до 32. Допустимое число индексов, которые могут быть переданы, равно 1 (индексирование одного подстрочного индекса) или NumberOfDimensions() (индексирование нескольких подстрочных индексов). При индексировании одного подстрочного индекса возвращается элемент с заданным смещением на основе 1, который обращается к данным в порядке столбцов. При индексировании нескольких индексов индексный список используется для доступа к указанному элементу. Допустимый диапазон для индексов: 1 <= index <= NumberOfElements(), для индексации одного подстрочного индекса. Для индексирования нескольких подстрочных индексов i-й индекс имеет допустимый диапазон: 1 <= index[i] <= GetDimensions().Get(1, i). Один mwException выдается, если передано недопустимое число индексов или если какой-либо индекс выходит за границы.

Аргументы
mwIndex i1, mwIndex i2, mwIndex i3, ...,Список входных индексов, разделенных запятыми
Пример
double data[4] = {1.0, 2.0, 3.0, 4.0};
double x;
mwArray a(2, 2, mxDOUBLE_CLASS);
a.SetData(data, 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 передается, если базовый массив не является struct массив. Переданное имя поля должно быть допустимым именем поля в struct массив. Индекс передается путем первого прохождения числа индексов, за которым следует массив индексов на основе 1. Этот оператор перегружен для поддержки индексов от 1 до 32. Допустимое число индексов, которые могут быть переданы, равно 1 (индексирование одного подстрочного индекса) или NumberOfDimensions() (индексирование нескольких подстрочных индексов). При индексировании одного подстрочного индекса возвращается элемент с заданным смещением на основе 1, который обращается к данным в порядке столбцов. При индексировании нескольких индексов индексный список используется для доступа к указанному элементу. Допустимый диапазон для индексов: 1 <= index <= NumberOfElements(), для индексации одного подстрочного индекса. Для индексирования нескольких подстрочных индексов i-й индекс имеет допустимый диапазон: 1 <= index[i] <= GetDimensions().Get(1, i). Один mwException выдается, если передано недопустимое число индексов или если какой-либо индекс выходит за границы.

Аргументы
char* nameПустая завершенная строка, содержащая имя поля для получения
mwIndex i1, mwIndex i2, mwIndex i3, ...,Список входных индексов, разделенных запятыми
Пример
const char* fields[] = {"a", "b", "c"};
int index[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 <type>& 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 оператор () (mwIndex i1, mwIndex i2, mwIndex i3,...,) const

Описание

Извлекает одно скалярное значение. Этот оператор перегружен для всех числовых и логических типов.

Аргументы
mwIndex i1, mwIndex i2, mwIndex i3, ...,Список входных индексов, разделенных запятыми
Пример
double data[4] = {1.0, 2.0, 3.0, 4.0};
double x;
mwArray a(2, 2, mxDOUBLE_CLASS);
a.SetData(data, 4);
x = (double)a(1,1);
x = (double)a(1,2);
x = (double)a(2,1);
x = (double)a(2,2);

std:: ostream:: оператор < < (const mwArray

&)
Описание

Написать mwArray для вывода потока. Выходные данные имеют тот же формат, что и выходные данные при вводе имени переменной в командной строке MATLAB. Посмотрите ToString().

Представлен в R2013b