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

Управляемые типы к массивам 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 к управляемым типам

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

Примечание

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

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

Тип MATLAB

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

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

Комментарии

cell

Нет данных

MWCellArray

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

structure

Нет данных

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'

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

Нет данных

Нет данных

'none'

Объект

Нет данных

Нет данных

'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[Pn,..,P1,M,N]

NumericType[M,N,P1,..,Pn]

System.Boolean[N]

logical [1,N]

System.Boolean[Pn,..,P1,M,N]

logical [M,N,P1,..,Pn]

System.Char[N]

char [1,N]

System.Char[Pn,..,P1,M,N]

char [M,N,P1,..,Pn]

System.String[N]

char [N,max_string_length]

System.String[Pn,..,P1,N]

char [N,max_string_length, P1,..,Pn]

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

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

Struct.NET [M, N]

Struct 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. Например, 1 X 1 int в MATLAB.

Вектор

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

N- массив

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

Совет

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

Внимание

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

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

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

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

String

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

StringArray

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

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

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

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

Массив Boolean

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

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

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

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

ArrayListМассив cell 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-by-N символьный массив MATLAB с N, равным длине строки.NET.

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

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

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

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

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

  • int8

  • uint16

  • uint32

  • uint64

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