exponenta event banner

Правила преобразования данных между .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-интерфейс 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]

Скалярная структура .NETСтруктура MATLAB, построенная из public поля экземпляра структуры .NET
Структура .NET [ N ]

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

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

Структура MATLAB [ M,N ], где каждый элемент построен из public поля экземпляра структуры .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-мерный тип массива, указанный пользователем, должен соответствовать рангу MATLAB numeric массив.

Совет

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

Внимание

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

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

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

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

String

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

String множество

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

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

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

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

Boolean множество

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

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

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

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

ArrayListMATLAB 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 множество

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

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

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

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

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