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

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

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

Примечание

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

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

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

System.Double

double

System.Single

single

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

System.Int64

int64

System.Int32

int32

System.Int16

int16

System.Byte

int8

System.String

char

Ничего

System.Boolean

logical

Ничего

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

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

Примечание

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

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

Тип MATLAB

Тип .NET (примитив)

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

Комментарии

cell

Н/Д

MWCellArray

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

structure

Н/Д

MWStructArray

char

System.String

MWCharArray

double

System.Double

MWNumericArray

По умолчанию это тип double.

single

System.Single

MWNumericArray

uint64

System.Int64

MWNumericArray

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

uint32

System.Int32

MWNumericArray

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

uint16

System.Int16

MWNumericArray

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

uint8

System.Byte

MWNumericArray

Ничего

logical

System.Boolean

MWLogicalArray

Ничего

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

Н/Д

Н/Д

Ничего

Объект

Н/Д

Н/Д

Ничего

Типы .NET для типов MATLAB

В порядок создания .NET интерфейсов, которые описывают безопасный для типа API компонента, созданного SDK™ компилятора MATLAB, необходимо принять решение о типах .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 [Pn., P1, M, N]

NumericType [M, N, P1., Pn]

Система. Булев [N]

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

Система. Булев [Pn,.., P1, M, N]

логический [M, N, P1., Pn]

Система. Char [N]

char [1, N]

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

char [M, N, P1., Pn]

Система. Строка [N]

char [N, max_string_length]

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

char [N, max_string_length, P1., Pn]

Скалярный struct .NETMATLAB struct построен из public поля образца struct .NET
Структура .NET [N ]

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

Структура .NET [M, N ]

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

native.MWStructArray struct
native.MWCellArray cell
Hashtable struct
Dictionary <K, V>

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

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

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

Преобразование этого типа MATLAB:Для этого:Следуйте следующим правилам:
numericСкаляр

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

Вектор

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

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

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

Совет

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

Внимание

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

Правила преобразования: MATLAB Char Arrays в типы .NET

Преобразование этого типа MATLAB:Для этого:Следуйте следующим правилам:
charCharThe char должно быть скалярным.
Char массив

The N-мерная Char тип должен совпадать с рангом MATLAB char массив.

String

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

String массив

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

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

Преобразование этого типа MATLAB:Для этого:Следуйте следующим правилам:
logicalBooleanThe logical должно быть скалярным.
Boolean[]

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

Boolean массив

The N-мерная Boolean массив должен совпадать с рангом MATLAB logical массив.

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

Преобразование этого типа MATLAB:Для этого:Следуйте следующим правилам:
cellSystem.Array

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

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

Внимание

Если MATLAB cell массив содержит 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 <reservedrangesplaceholder0>Имя и количество общих полей в указанном struct .NET должны совпадать с именем и количеством полей в struct MATLAB.
Hashtable

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

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

Преобразование этого типа MATLAB:Для этого:Следуйте следующим правилам:
Объект .NETТип или супер-тип содержащего объектаОбъект .NET в MATLAB можно преобразовать только в тип или супертип.

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

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

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

Более высокие размерные массивы String аналогично преобразуются.

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

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

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

  • int8

  • uint16

  • uint32

  • uint64

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