Правила для преобразования данных между.NET и MATLAB

Примечание

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

Управляемые типы.NET к массивам MATLAB

В следующей таблице перечислены правила преобразования данных, использованные при преобразовании нативных типов.NET в MATLAB® массивы.

Правила преобразования: управляемые типы к массивам MATLAB

Нативный тип.NETМассив MATLABКомментарии

System.Double

double

System.Single

single

Доступный только, когда makeDouble аргумент конструктора установлен в false. Значением по умолчанию является true, который создает double MATLAB ввод.

System.Int64

int64

System.Int32

int32

System.Int16

int16

System.Byte

int8

System.String

char

'none'

System.Boolean

logical

'none'

Массивы MATLAB к управляемым типам.NET

В следующей таблице перечислены правила преобразования данных, использованные при преобразовании массивов MATLAB в нативные типы.NET.

Правила преобразования: массивы MATLAB к управляемым типам

Тип MATLAB

(Примитивный) Тип.NET

Тип.NET (Класс)

Комментарии

cell

N/A

MWCellArray

Ячейка и массивы структур не имеют никакого соответствующего типа.NET.

structure

N/A

MWStructArray

char

System.String

MWCharArray

double

System.Double

MWNumericArray

Значением по умолчанию является тип дважды.

single

System.Single

MWNumericArray

uint64

System.Int64

MWNumericArray

Преобразование в эквивалентный тип без знака не поддерживается

uint32

System.Int32

MWNumericArray

Преобразование в эквивалентный тип без знака не поддерживается

uint16

System.Int16

MWNumericArray

Преобразование в эквивалентный тип без знака не поддерживается

uint8

System.Byte

MWNumericArray

'none'

logical

System.Boolean

MWLogicalArray

'none'

Указатель на функцию

N/A

N/A

'none'

Объект

N/A

N/A

'none'

Типы.NET к типам MATLAB

Для того, чтобы создать интерфейсы.NET, которые описывают безопасный с точки зрения типов API сгенерированного компонента MATLAB Compiler SDK™, необходимо выбрать типы.NET, используемые для параметров ввода и вывода.

Когда выбор ввел типы, рассматривает, как входные параметры.NET становятся типами MATLAB. При выборе выходных типов рассмотрите обратное преобразование

Следующие таблицы приводят результаты преобразования данных, и правила раньше преобразовывали типы.NET в массивы MATLAB и массивы MATLAB к типам.NET.

Примечание

Недопустимые преобразования приводят к выданному ArgumentException

Результаты преобразования: типы.NET к типам MATLAB

Тип.NET

Преобразует в тип MATLAB

NumericType

  • System.Double

  • System.Single

  • System.Byte

  • System.Int16

  • System.Int32

  • System.Int64

  • System.Int64

numeric

System.Boolean

logical

System.Char

char

System.String

NumericType [N]

NumericType [1, N]

NumericType [PnP1, MN]

NumericType [MNP1.. Pn]

Система. [N]

логический [1, N]

Система. [Pn,.. P1, MN]

логический [MNP1.. Pn

Система. [N]

char [1, N]

Система. [Pn,.. P1, MN]

char [MNP1.. Pn

Система. [N]

char [NmaxStringLength ]

Система. [Pn,.. P1, N]

char [NmaxStringLength P1.. Pn

Скалярный struct.NETStruct MATLAB создается из public поля экземпляра struct.NET
Struct.NET [N ]

Struct MATLAB [1, N] где каждый элемент создается из public поля экземпляра struct.NET

Struct.NET [MN ]

Struct MATLAB [MN ] где каждый элемент создается из public поля экземпляра struct.NET

native.MWStructArray struct
native.MWCellArray cell
Hashtable struct
Dictionary <KV>

Где K = строка и V = скаляр или массив [Numeric, boolean'char'Строка]

struct
ArrayList cell
Любой другой тип.NET в домене приложения по умолчаниюОбъект.NET
Любой другой сериализуемый.NET вводит в домене приложения не по умолчанию Объект.NET

Правила преобразования: MATLAB числовые типы к типам.NET

Преобразовывать этот тип MATLAB:К этому:Следуйте этим правилам:
numericСкаляр

Тип должен быть скаляром в MATLAB. Например, 1 X 1 int в MATLAB.

Вектор

Тип должен быть вектором в MATLAB. Например, 1 X N или N X 1 int массив в MATLAB.

N- размерный массив

То- размерный тип массива, заданный пользователем, должен совпадать с рангом numeric MATLAB массив.

Совет

При преобразовании MATLAB numeric массивы, расширяющиеся преобразования позволены. Например, int может быть преобразован в double. Заданный тип должен быть числовым типом, который равен или более широк. Сужение преобразований выдает ArgumentException.

Внимание

Типы.NET не так гибки как типы MATLAB. Заботьтесь и протестируйте соответственно с.NET выходные параметры перед объединяющимися данными в ваши приложения.

Правила преобразования: массивы символов MATLAB к типам.NET

Преобразовывать этот тип MATLAB:К этому:Следуйте этим правилам:
charCharchar должен быть скаляр.
Char массив

То- размерный Char тип должен совпадать с рангом char MATLAB массив.

String

MATLAB char массив должен быть [1, N]

String массив

То- размерный MATLAB char массив может быть преобразован в (N-1)-размерный массив типа String.

Правила преобразования: логические массивы MATLAB к типам.NET

Преобразовывать этот тип MATLAB:К этому:Следуйте этим правилам:
logicalBooleanlogical должен быть скаляр.
Boolean[]

logical MATLAB массив должен быть [1, N] или [N,1].

Boolean массив

То- размерный Boolean массив должен совпадать с рангом logical MATLAB массив.

Правила преобразования: массив ячеек к типам.NET

Преобразовывать этот тип MATLAB:К этому:Следуйте этим правилам:
cellSystem.Array

То- размерный MATLAB cell массив преобразован в N- размерный System.Array из типа object.

ArrayListcell MATLAB массив должен быть вектором.

Внимание

Если cell MATLAB массив содержит struct, это оставлено без изменений. Все другие типы преобразованы в нативные типы. Любой вложил cell массив преобразован в System.Array соответствие с размерностью cell массив, как проиллюстрировано в этом фрагменте кода:

Let C = {[1,2,3], {[1,2,3]},'Hello world'}
%  be a cell
C может быть преобразован в object[1,3] где object[1,1] содержит int[,], object[1,2] содержит object[1,1] чьим первым элементом является int[,], и object[1,3] содержит char[,].

Примечание

Любой вложенный массив ячеек преобразован в System.Array это совпадает с размерностью cell массив

Правила преобразования: Struct к типам.NET

Преобразовывать этот тип MATLAB:К этому:Следуйте этим правилам:
struct.NET structИмя и номер общедоступных полей в заданном struct.NET должно совпадать с именем и номером полей в struct MATLAB.
Hashtable

Скалярный struct может быть преобразован в Hashtable. Любой вложил struct будет также преобразован в Hashtable. Если вложенный struct не скаляр, затем ArgumentException выдан. Ключ словаря должен иметь тип String.

Правила преобразования: объекты.NET в MATLAB к собственным объектам.NET

Преобразовывать этот Тип MATLAB:К этому:Следуйте этим правилам:
Объект.NETТип или супертип содержания объектаA. СЕТЕВОЙ объект в MATLAB может только быть преобразован в тип или супертип.

Преобразование символов и преобразование строк

Нативная строка.NET преобразована в 1- N Символьный массив MATLAB, с N равняйтесь длине строки.NET.

Массив строк.NET (string[]) преобразован в M- N символьный массив, с M равняйтесь числу элементов в строке ([]) массив и N равняйтесь максимальной длине строки в массиве.

Выше размерные массивы String так же преобразованы.

В общем случае N- размерный массив String преобразован в N+1 размерный символьный массив MATLAB с соответствующим нулевым дополнением, где предоставленные строки имеют различные длины.

Неподдерживаемые типы массива MATLAB

Продукт MATLAB Compiler SDK не поддерживает возврат следующих типов массива MATLAB, потому что они не CLS-совместимы:

  • int8

  • uint16

  • uint32

  • uint64

Однако допустимо передать эти типы в качестве аргументов к компоненту MATLAB Compiler SDK.