mwArray

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

Описание

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

Примечание

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

Необходимые заголовки

  • mclcppclass.h

  • mclmcrrt.h

Совет

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

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

mwArray ()

Описание

Создайте пустой массив типа mxDOUBLE_CLASS.

mwArray (mxClassID mxID

)
Описание

Создайте пустой массив заданного типа.

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

mw Array (mw Size num_rows, mw Size num_cols, mx Class ID mx ID, mx Complexity cmplx = mx REAL

)
Описание

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

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

mw Array (mw Size num_dims, const mw Size * dims, mx Class ID mx ID, mx Complexity cmplx = mx REAL

)
Описание

Создайте 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Пустой символ буфер, используемый для инициализации массива

mwArray (mwSize num_strings, const char * * str

)
Описание

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

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

mwArray (mwSize num_rows, mwSize num_cols, int num_fields, const char * * fieldnames

)
Описание

Создайте матрицу типов 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 (< type >

re)
Описание

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

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

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

  • mxSingle

  • mxInt8

  • mxUint8

  • mxInt16

  • mxUint16

  • mxInt32

  • mxUint32

  • mxInt64

  • mxUint64

  • mxLogical

mwArray (< type > re, < type

> 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-by- 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 ElementSize () 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 GetFieldName (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 CompareTo (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 * имя, 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Буфер символов с обрыв нуля, содержащий имя поля
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, 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

)
Описание

Создает сложную разреженную матрицу типа 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, 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

статический mw Array New Sparse (mw Size num_rows, mw Size num_cols, mw Size nzmax, mx Class ID mx ID, mx Complexity cmplx = mx REAL)

Описание

Создает пустую разреженную матрицу. Все элементы в пустой разреженной матрице первоначально равны нулю, а объем выделенного хранилища для ненулевых элементов задан как 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 для не число. Некоторые математические операции возврата 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 ()

Описание

Возвращает значение внутренней Inf MATLAB переменная. 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);

статический bool 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 для не число. 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 * имя, 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Значение null оконечно строка , содержащая имя поля, которое нужно получить
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 < type

> & 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
Для просмотра документации необходимо авторизоваться на сайте