Маршалинг данных с API MWArray

Поддерживать преобразование данных между управляемыми типами.NET и MATLAB® типы, MATLAB Compiler SDK™ обеспечивает набор классов преобразования данных, выведенных из абстрактного класса MWArray. Эти классы позволяют вам передавать большинство нативных типов значения.NET как параметры непосредственно, не используя явное преобразование данных. Вы ссылаетесь на MWArray блок в вашем управляемом приложении, чтобы преобразовать нативные массивы в массивы MATLAB и наоборот. Этот процесс называется data marshaling.

Когда вы вызываете метод на компонент, параметры ввода и вывода являются производным типом MWArray. Чтобы передать параметры, можно или инстанцировать одного из MWArray подклассы явным образом, или, во многих случаях, передают параметры как managed data type и используют неявную функцию преобразования данных MATLAB Compiler SDK.

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

Классы преобразования данных MWArray

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

  • MWArray

  • MWIndexArray

  • MWCellArray

  • MWCharacterArray

  • MWLogicalArray

  • MWNumericArray

  • MWStructArray

Корнем иерархии является MWArray абстрактный класс. MWIndexArray также абстрактный класс. Другие подклассы представляют главные типы массива MATLAB: MWNumericArray, MWLogicalArray, MWCharArray, MWCellArray, и MWStructArray.

MWArray и его производные классы обеспечивают следующую функциональность:

  • Конструкторы и деструкторы, чтобы инстанцировать и избавиться от массивов MATLAB

  • Свойства добраться и установить данные об основном массиве

  • Индексаторы, чтобы поддержать подмножество индексации массива MATLAB

  • Неявные и явные операторы преобразования данных

  • Общие методы

Для получения информации об этих классах преобразования данных см. Справочник по библиотеке классов MWArray, который также доступен в matlabroot\help\dotnetbuilder\MWArrayAPI папка, где matlabroot представляет вашу папку установки MATLAB.

Передайте данные от кода.NET до MATLAB

В большинстве экземпляров, если вы используете нативный примитивный.NET или массив как входной параметр в программе C#, MATLAB Compiler SDK автоматически и прозрачно преобразуете его в экземпляр соответствующего MWArray класс прежде, чем передать его сгенерированному методу. MATLAB Compiler SDK преобразует большинство CLS-совместимых строк, числовых типов или многомерных массивов этих типов к соответствующему MWArray ввод. Для списка неподдерживаемых типов смотрите Неподдерживаемые Типы массива MATLAB. Это преобразование прозрачно в приложениях C#, но может потребовать явного оператора кастинга на других языках, например, op_implicit в Visual Basic®.

Например, рассмотрите оператор.NET:

result = theFourier.plotfft(3, data, interval);

В этом операторе, аргументе interval имеет собственный тип.NET System.Double. MATLAB Compiler SDK бросает этот аргумент к MATLAB, 1 на 1 удваивают MWNumericArray введите, который является классом обертки, содержащим двойной массив MATLAB.

Передайте данные от MATLAB до кода.NET

Все данные, возвращенные от функции MATLAB до метода.NET, представлены как экземпляр соответствующего MWArray подкласс. Например, массив ячеек MATLAB возвращен как MWCellArray объект.

Возвращенные данные автоматически не преобразованы в нативный массив. Если необходимо получить соответствующий нативный тип массива, вызовите ToArray метод, который преобразует массив MATLAB в соответствующий собственный тип данных за некоторыми исключениями. Массивы ячеек, массивы структур и массивы комплексных чисел не доступны как нативные типы.NET. Чтобы представлять эти типы данных, необходимо создать экземпляр MWCellArray, MWStructArray, или MWNumericArray, соответственно.

Для списка собственных типов данных.NET и их эквивалентов в MATLAB, см. Правила для Преобразования Данных Между.NET и MATLAB.

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте