mwArray

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

Описание

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

Примечание

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

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

  • mclcppclass.h

  • mclmcrrt.h

Совет

MATLAB Compiler 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)

Описание

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

Аргументы

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

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

Описание

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

Аргументы

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

mwArray (char const* str)

Описание

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

Аргументы

const char* strОтключенный пустым указателем символьный буфер раньше инициализировал массив

mwArray (mwSize num_strings, char const ** str)

Описание

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

Аргументы

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

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

Описание

Создайте матрицу типа 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, char const ** имена полей)

Описание

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

Аргументы

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

mwArray (прибытие const mwArray&)

Описание

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

Аргументы

mwArray& arrmwArray скопировать

mwArray (<тип> ре)

Описание

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

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

Аргументы

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

  • mxSingle

  • mxInt8

  • mxUint8

  • mxInt16

  • mxUint16

  • mxInt32

  • mxUint32

  • mxInt64

  • mxUint64

  • mxLogical

mwArray (<тип> ре, <тип> я),

Описание

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

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

Аргументы

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

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

  • mxDouble

  • mxSingle

  • mxInt8

  • mxUint8

  • mxInt16

  • mxUint16

  • mxInt32

  • mxUint32

  • mxInt64

  • mxUint64

  • mxLogical

Методы

Клон mwArray () 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 Сериализируют () const

Описание

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

Пример

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.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 (международный индекс)

Описание

Определите имя данного поля в 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 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 Равняется (прибытие const mwArray&) 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&) 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 NumberOfNonZeros(). Для неразреженных массивов размер возвращенного массива 1 NumberOfElements(), и индексы строки всех элементов возвращены.

Пример

#include <stdio.h>
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 ()

Описание

Преобразуйте числовой массив, который был ранее выделен как 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 Добираются (mwSize num_indices...)

Описание

Выбирает один элемент в заданном индексе. Количество индексов передается, сопровождается списком, разделенным запятыми индексов на основе 1. Верный номер индексов, которые могут быть переданы в, любой 1 (одна индексация индекса) или NumberOfDimensions() (несколько преобразовывают индексацию в нижний индекс). В одном индексе, индексирующем элемент при заданном смещении на основе 1, возвращен, получив доступ к данным в порядке развертывания по столбцам. В нескольких преобразовывают индексацию в нижний индекс списка индексов, используется, чтобы получить доступ к указанному элементу. Допустимой областью значений для индексов является     1 <= index <= NumberOfElements(), для одной нижней индексации. Поскольку несколько преобразовывают в нижний индекс индексацию, iиндекс th имеет допустимую область значений:     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 Добираются (char const* имя, mwSize num_indices...)

Описание

Выбирает один элемент в заданном имени поля и индексе. Этот метод может только быть назван на массиве, который имеет тип mxSTRUCT_CLASS. mwException выдан, если основным массивом не является struct массив. Имя поля передало, должно быть допустимое имя поля в struct массив. Индекс передается первой передачей количества индексов, сопровождаемых списком, разделенным запятыми индексов на основе 1. Верный номер индексов, которые могут быть переданы в, любой 1 (одна индексация индекса) или NumberOfDimensions() (несколько преобразовывают индексацию в нижний индекс). В одном индексе, индексирующем элемент при заданном смещении на основе 1, возвращен, получив доступ к данным в постолбцовом порядке. В нескольких преобразовывают индексацию в нижний индекс списка индексов, используется, чтобы получить доступ к указанному элементу. Допустимой областью значений для индексов является     1 <= index <= NumberOfElements(), для одной нижней индексации. Поскольку несколько преобразовывают индексацию в нижний индекс, индекс ith имеет допустимую область значений:     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 ()

Описание

Доступы к действительной части комплексного массива. Возвращенный 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);

пустое множество (прибытие const mwArray&)

Описание

Присвойте совместно использованную копию входного массива к в настоящее время ссылочной ячейке для массивов типа 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);

освободите 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);

освободите 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);

освободите 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);

освободите 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);

освободите 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);

освободите 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&)

Описание

Десериализовывает массив, который был сериализирован с 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, 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 для Не числа. Определенные математические операции возвращают NaN в результате, например:

  • 0.0/0.0

  • Inf-Inf

Значение NaN встроен к системе; вы не можете изменить его.

Пример

double x = mwArray::GetNaN();

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

Описание

Возвращает значение eps MATLAB переменная. Эта переменная является расстоянием от 1,0 до следующего самого большого числа с плавающей запятой. Следовательно, это - мера точности с плавающей точкой. pinv MATLAB и 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);

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

Описание

Определяет, является ли значением NaNNaN представление арифметики 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(), для одной нижней индексации. Поскольку несколько преобразовывают индексацию в нижний индекс, индекс ith имеет допустимую область значений:     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 () (char const* имя, mwIndex i1, mwIndex i2, mwIndex i3...)

Описание

Выбирает один элемент в заданном имени поля и индексе. Этот метод может только быть назван на массиве, который имеет тип mxSTRUCT_CLASS. mwException выдан, если основным массивом не является struct массив. Имя поля передало, должно быть допустимое имя поля в struct массив. Индекс передается первой передачей количества индексов, сопровождаемых массивом индексов на основе 1. Этот оператор перегружается, чтобы поддержать 1 - 32 индекса. Верный номер индексов, которые могут быть переданы в, любой 1 (одна индексация индекса) или NumberOfDimensions() (несколько преобразовывают индексацию в нижний индекс). В одном индексе, индексирующем элемент при заданном смещении на основе 1, возвращен, получив доступ к данным в постолбцовом порядке. В нескольких преобразовывают индексацию в нижний индекс списка индексов, используется, чтобы получить доступ к указанному элементу. Допустимой областью значений для индексов является     1 <= index <= NumberOfElements(), для одной нижней индексации. Поскольку несколько преобразовывают индексацию в нижний индекс, индекс ith имеет допустимую область значений:     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& = (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);

станд:::: оператор <<(const mwArray &)

Описание

Запишите mwArray к потоку вывода. Выход имеет тот же формат как выход, когда имя переменной вводится в командной строке MATLAB. Смотрите ToString().

Введенный в R2013b

Для просмотра документации необходимо авторизоваться на сайте