Класс раньше передавал аргументы ввода/вывода функциям C++, сгенерированным MATLAB Compiler SDK
Используйте mwArray
класс, чтобы передать аргументы ввода/вывода сгенерированным функциям интерфейса C++. Этот класс состоит из тонкой обертки вокруг MATLAB® массив. Все данные в MATLAB представлены массивами. mwArray
класс предоставляет необходимым конструкторам, методам и операторам для создания массивов и инициализации, а также простой индексации.
Примечание
Арифметические операторы, такие как сложение и вычитание, больше не поддерживаются с Релиза 14.
mclcppclass.h
mclmcrrt.h
Совет
MATLAB Compiler SDK™ автоматически включает эти заголовочные файлы в заголовочный файл, сгенерированный для ваших функций MATLAB.
Создайте пустой массив типа mxDOUBLE_CLASS
.
Создайте пустой массив заданного типа.
mxClassID mxID | Допустимый mxClassID определение типа массива, чтобы создать. Смотрите работу с mxArrays для получения дополнительной информации о mxClassID . |
Создайте 2D матрицу заданного типа и сложности. Для нечисловых типов, mxComplexity
будет проигнорирован. Для числовых типов передайте mxCOMPLEX
для последнего аргумента, который создаст комплексную матрицу; в противном случае матрица будет действительна. Все элементы инициализируются, чтобы обнулить. Для матриц ячейки все элементы инициализируются к пустым ячейкам.
mwSize num_rows | Количество строк в массиве |
mwSize num_cols | Количество столбцов в массиве |
mxClassID mxID | Допустимый mxClassID определение типа массива, чтобы создать. Смотрите работу с mxArrays для получения дополнительной информации о mxClassID . |
mxComplexity cmplx | Сложность массива, чтобы создать. Допустимыми значениями является mxREAL и mxCOMPLEX . Значением по умолчанию является mxREAL . |
Создайте n
- размерный массив заданного типа и сложности. Для нечисловых типов, mxComplexity
будет проигнорирован. Для числовых типов передайте mxCOMPLEX
для последнего аргумента, который создаст комплексную матрицу; в противном случае массив будет действителен. Все элементы инициализируются, чтобы обнулить. Для массивов ячеек все элементы инициализируются к пустым ячейкам.
mwSize num_dims | Количество размерностей в массиве |
const mwSize* dims | Размерности массива |
mxClassID mxID | Допустимый mxClassID определение типа массива, чтобы создать. Смотрите работу с mxArrays для получения дополнительной информации о mxClassID . |
mxComplexity cmplx | Сложность массива, чтобы создать. Допустимыми значениями является mxREAL и mxCOMPLEX . Значением по умолчанию является mxREAL . |
Создайте 1
массив типа n
mxCHAR_CLASS
, с n = strlen(str)
, и инициализируйте данные массива символами в предоставленной строке.
const char* str | Отключенный пустым указателем символьный буфер раньше инициализировал массив |
Создайте матрицу типа mxCHAR_CLASS
, и инициализируйте данные массива символами в предоставленных строках. Созданный массив имеет размерности m
- max
, где m
количество строк и max
длина самой длинной строки в str
.
mwSize num_strings | Количество строк во входном массиве |
const char** str | Массив отключенных пустым указателем строк |
Создайте матрицу типа mxSTRUCT_CLASS
, с заданными именами полей. Все элементы инициализируются пустыми ячейками.
mwSize num_rows | Количество строк в массиве |
mwSize num_cols | Количество столбцов в массиве |
int num_fields | Количество полей в struct матрица. |
const char** fieldnames | Массив отключенных пустым указателем строк, представляющих имена полей |
Создайте n
- размерный массив типа mxSTRUCT_CLASS
, с заданными именами полей. Все элементы инициализируются пустыми ячейками.
mwSize num_dims | Количество размерностей в массиве |
const mwSize* dims | Размерности массива |
int num_fields | Количество полей в struct матрица. |
const char** fieldnames | Массив отключенных пустым указателем строк, представляющих имена полей |
Создайте глубокую копию существующего массива.
mwArray& arr | mwArray скопировать |
Создайте действительный скалярный массив.
Скалярный массив создается с типом входного параметра.
<type> re | Скалярное значение, чтобы инициализировать массив. <type> может быть любое следующее:
|
Создайте комплексный скалярный массив.
Скалярный массив создается с типом входного параметра.
<type> re | Скалярное значение, чтобы инициализировать действительную часть массива |
<type> im | Скалярное значение, чтобы инициализировать мнимую часть массива |
<type>
может быть любое следующее:
mxDouble
mxSingle
mxInt8
mxUint8
mxInt16
mxUint16
mxInt32
mxUint32
mxInt64
mxUint64
mxLogical
Создайте новый массив, представляющий глубокую копию массива.
mwArray a(2, 2, mxDOUBLE_CLASS); mwArray b = a.Clone();
Создайте разделяемую копию существующего массива. Новый массив и исходный массив обе точки к тем же данным.
mwArray a(2, 2, mxDOUBLE_CLASS); mwArray b = a.SharedCopy();
Сериализируйте массив в байты. 1 n
числовая матрица типа mxUINT8_CLASS
возвращен содержащий сериализированные данные. Данные могут быть десериализованы назад в исходное представление путем вызова mwArray::Deserialize()
.
mwArray a(2, 2, mxDOUBLE_CLASS); mwArray b = a.Serialize();
Определите тип массива. Смотрите работу с mxArrays для получения дополнительной информации о mxClassID
.
mwArray a(2, 2, mxDOUBLE_CLASS); mxClassID id = a.ClassID();
Определите размер, в байтах, элемента типа массива. Если массив будет комплексным, возвращаемое значение будет представлять размер, в байтах, действительной части элемента.
mwArray a(2, 2, mxDOUBLE_CLASS); int size = a.ElementSize();
Определите общий размер массива.
mwArray a(2, 2, mxDOUBLE_CLASS); int n = a.NumberOfElements();
Определите размер данных массива. Если основной массив не разрежен, это возвращает то же значение как NumberOfElements()
.
mwArray a(2, 2, mxDOUBLE_CLASS); int n = a.NumberOfNonZeros();
Определите выделенный размер данных массива. Если основной массив не разрежен, это возвращает то же значение как NumberOfElements()
.
mwArray a(2, 2, mxDOUBLE_CLASS); int n = a.MaximumNonZeros();
Определите размерность массива.
mwArray a(2, 2, mxDOUBLE_CLASS); int n = a.NumberOfDimensions();
Определите количество полей в struct
массив. Если основной массив не имеет типа struct
, нуль возвращен.
const char* fields[] = {"a", "b", "c"}; mwArray a(2, 2, 3, fields); int n = a.NumberOfFields();
Определите имя данного поля в 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;
Определите размер каждой размерности в массиве. Размер возвращенного массива 1 NumberOfDimensions()
.
mwArray a(2, 2, mxDOUBLE_CLASS); mwArray dims = a.GetDimensions();
Определите, пуст ли массив.
mwArray a; bool b = a.IsEmpty();
Определите, разрежен ли массив.
mwArray a(2, 2, mxDOUBLE_CLASS); bool b = a.IsSparse();
Определите, является ли массив числовым.
mwArray a(2, 2, mxDOUBLE_CLASS); bool b = a.IsNumeric();
Определите, является ли массив комплексным.
mwArray a(2, 2, mxDOUBLE_CLASS, mxCOMPLEX); bool b = a.IsComplex();
Возвращает 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);
Сравнивает этот массив с заданным массивом для порядка. Этот метод делает мудрое байтом сравнение основных массивов. Поэтому массивы того же типа должны быть сравнены. Массивы различных типов не будут, в целом, упорядочены эквивалентно, даже если они будут инициализированы теми же данными.
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);
Создает уникальное значение хэш-функции из базовых байтов в массиве. Поэтому массивы различных типов будут иметь различные хэш-коды, даже если они будут инициализированы теми же данными.
mwArray a(1, 1, mxDOUBLE_CLASS); int n = a.HashCode();
Возвращает строковое представление основного массива. Возвращенная строка является тем же, который возвращен путем введения имени переменной в командной строке MATLAB.
mwArray a(1, 1, mxDOUBLE_CLASS, mxCOMPLEX); a.Real() = 1.0; a.Imag() = 2.0; printf("%s\n", (const char*)(a.ToString()));
Возвращает массив, представляющий индексы строки (первая размерность) элементов этого массива в порядке развертывания по столбцам. Для разреженных массивов индексы возвращены для только ненулевых элементов, и размер возвращенного массива 1 NumberOfNonZeros()
. Для неразреженных массивов размер возвращенного массива 1 NumberOfElements()
, и индексы строки всех элементов возвращены.
#include <stdio.h> mwArray a(1, 1, mxDOUBLE_CLASS); mwArray rows = a.RowIndex();
Возвращает массив, представляющий индексы столбца (второе измерение) элементов этого массива в порядке развертывания по столбцам. Для разреженных массивов индексы возвращены для только ненулевых элементов, и размер возвращенного массива 1 NumberOfNonZeros()
. Для неразреженных массивов размер возвращенного массива 1 NumberOfElements()
, и индексы столбца всех элементов возвращены.
mwArray a(1, 1, mxDOUBLE_CLASS); mwArray rows = a.ColumnIndex();
Преобразуйте числовой массив, который был ранее выделен как 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);
Выбирает один элемент в заданном индексе. Количество индексов передается, сопровождается списком, разделенным запятыми индексов на основе 1. Верный номер индексов, которые могут быть переданы в, любой 1 (одна индексация индекса) или NumberOfDimensions()
(несколько индексация индекса). В одном индексе, индексирующем элемент при заданном смещении на основе 1, возвращен, получив доступ к данным в порядке развертывания по столбцам. В нескольких индекс, индексирующий список индексов, используется, чтобы получить доступ к указанному элементу. Допустимой областью значений для индексов является 1 <= index <= NumberOfElements()
, для одной индексации индекса. Для нескольких индексация индекса,
индекс th имеет допустимую область значений: i
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);
Выбирает один элемент в заданном имени поля и индексе. Этот метод может только быть назван на массиве, который имеет тип 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
рассматривается действительным и имеет ту же размерность и тип как оригинал.
Комплексные массивы состоят из Комплексных чисел, которые являются векторами 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
рассматривается действительным и имеет ту же размерность и тип как оригинал.
Комплексные массивы состоят из Комплексных чисел, которые являются векторами 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);
Присвойте совместно использованную копию входного массива к в настоящее время ссылочной ячейке для массивов типа mxCELL_CLASS
и mxSTRUCT_CLASS
.
mwArray& arr | mwArray присваивать в настоящее время ссылочной ячейке |
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);
Копирует данные массива в предоставленный числовой буфер.
Данные копируются в порядке развертывания по столбцам. Если основной массив не имеет того же типа как входной буфер, данные преобразованы в этот тип, когда это копируется. Если преобразование не может быть сделано, mwException
выдан.
<numeric-type>* buffer | Буфер, чтобы получить копию. Допустимые типы для <numeric-type> :
|
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);
Копирует данные массива в предоставленный 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);
Копирует данные массива в предоставленный 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);
Копирует данные из предоставленного числового буфера в массив.
Данные копируются в порядке развертывания по столбцам. Если основной массив не имеет того же типа как входной буфер, данные преобразованы в этот тип, когда это копируется. Если преобразование не может быть сделано, mwException
выдан.
Вы не можете использовать SetData
динамически изменить размер mwArray
.
<numeric-type>* buffer | Буферный содержащий данные, чтобы скопировать. Допустимые типы для <numeric-type> :
|
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);
Копирует данные из предоставленного 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);
Копирует данные из предоставленного 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::Serialize()
. Входной массив должен иметь тип mxUINT8_CLASS
и содержите данные из сериализированного массива. Если входные данные не представляют сериализированный mwArray
, поведение этого метода не определено.
mwArray& arr | mwArray это было получено путем вызова 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);
Создает действительную разреженную матрицу типа 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
Создает действительную разреженную матрицу типа 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
Создает комплексную разреженную матрицу типа 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
Создает комплексную разреженную матрицу типа 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
Создает логическую разреженную матрицу с конкретным количеством строк и столбцов.
Длины входного индекса строки и столбца и массивов данных должны все быть тем же самым или равный 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
Создает логическую разреженную матрицу с количеством строк и столбцов, выведенных из входных данных.
Длины входного индекса строки и столбца и массивов данных должны все быть тем же самым или равный 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
Создает пустую разреженную матрицу. Всеми элементами в пустой разреженной матрице является первоначально нуль, и сумма выделенного устройства хранения данных для ненулевых элементов задана 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
Получите значение NaN
(Не число).
Вызовите mwArray::GetNaN
возвращать значение NaN
для вашей системы. NaN
представление арифметики IEEE для Не числа. Определенные математические операции возвращают NaN
в результате, например:
0.0/0.0
Inf-Inf
Значение NaN
встроен к системе; вы не можете изменить его.
double x = mwArray::GetNaN();
Возвращает значение eps
MATLAB переменная. Эта переменная является расстоянием от 1,0 до следующего самого большого числа с плавающей запятой. Следовательно, это - мера точности с плавающей точкой.
pinv
MATLAB и
rank
функции используют eps
как допуск по умолчанию.
double x = mwArray::GetEps();
Возвращает значение MATLAB внутренний Inf
переменная. Inf
постоянная переменная арифметика IEEE представления положительная бесконечность. Значение Inf
встроен в систему; вы не можете изменить его.
Операции, которые возвращают Inf
включение
Деление 0. Например, 5/0 возвращает Inf
.
Операции, приводящие к переполнению. Например, exp(10000)
возвращает Inf
потому что результат является слишком большим, чтобы быть представленным на вашей машине.
double x = mwArray::GetInf();
Определите, конечно ли значение. Номер конечен, если он больше -Inf
и меньше, чем Inf
.
double x | Значение, чтобы протестировать на ограниченность |
bool x = mwArray::IsFinite(1.0);
Определяет, равно ли значение бесконечности или минус бесконечность. MATLAB хранит значение бесконечности в постоянной переменной под названием Inf
, который представляет арифметику IEEE положительная бесконечность. Значение переменной, Inf
, встроен в систему; вы не можете изменить его.
Операции, которые возвращают бесконечность, включают
Деление 0. Например, 5/0 возвращает бесконечность.
Операции, приводящие к переполнению. Например, exp(10000)
возвращает бесконечность, потому что результат является слишком большим, чтобы быть представленным на вашей машине. Если значение равняется NaN
(Не число), затем mxIsInf
возвращает false
. Другими словами, NaN
не равно бесконечности.
double x | Значение, чтобы протестировать на бесконечность |
bool x = mwArray::IsInf(1.0);
Определяет, является ли значением NaN
NaN
представление арифметики IEEE для Не числа. NaN
получен в результате математически неопределенных операций такой как
0.0/0.0
Inf-Inf
Система изучает семейство комбинаций двоичных разрядов как представление NaN
. Другими словами, NaN
не ни одно значение, скорее это - семейство чисел что программное обеспечение MATLAB (и другие совместимые IEEE приложения) использование, чтобы представлять состояние ошибки или недостающие данные.
double x | Значение, чтобы протестировать на NaN |
bool x = mwArray::IsNaN(1.0);
Выбирает один элемент в заданном индексе. Индекс передается как список, разделенный запятыми индексов на основе 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);
Выбирает один элемент в заданном имени поля и индексе. Этот метод может только быть назван на массиве, который имеет тип 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);
Устанавливает одно скалярное значение. Этот оператор перегружается для всех числовых и логических типов.
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;
Выбирает одно скалярное значение. Этот оператор перегружается для всех числовых и логических типов.
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);
Запишите mwArray
к потоку вывода. Выход имеет тот же формат как выход, когда имя переменной вводится в командной строке MATLAB. Смотрите ToString()
.