Классы преобразования данных и интерфейс MATLAB Compiler SDK

Панорама

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

  • MWArray

  • MWIndexArray

  • MWCellArray

  • MWCharacterArray

  • MWLogicalArray

  • MWNumericArray

  • MWStructArray

MWArray и MWIndexArray абстрактные классы. Другие классы представляют стандартные типы массива MATLAB®: ячейка, символ, логический, числовой, и struct. Каждый класс предоставляет конструкторам и набору свойств и методов для создания и доступа к состоянию базового массива MATLAB.

Существуют некоторые типы данных (массивы ячеек, массивы структур и массивы комплексных чисел) обычно используются в продукте MATLAB, которые не доступны как нативные типы.NET. Чтобы представлять эти типы данных, необходимо создать экземпляр eitherMWCellArray, MWStructArray, или MWNumericArray.

Возврат данных от MATLAB до управляемого кода

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

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

Пример MWNumericArray в приложении.NET

Вот фрагмент кода, который показывает, как преобразовать double значение (5.0) к MWNumericArray ввод:

MWNumericArray arraySize = 5.0;
magicSquare = magic.MakeSqr(arraySize);

После double значение преобразовано и присвоено переменной arraySize, можно использовать arraySize аргумент с основанным на MATLAB методом без дальнейшего преобразования. В этом примере основанным на MATLAB методом является magic.MakeSqr(arraySize).

Интерфейсы, сгенерированные целью.NET MATLAB Compiler SDK

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

  • Подпись single output, которая принимает, что только один выход требуется и возвращает результат в одном MWArray вместо массива MWArray.

  • Подпись standard, которая задает входные параметры типа MWArray и возвращает значения как массив MWArray.

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

Один Выходной API

Примечание

Обычно вы используете один выходной интерфейс в функциях MATLAB, которые возвращают отдельный аргумент. Можно также использовать один выходной интерфейс, когда это необходимо, чтобы использовать выход функции как вход к другой функции.

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

Например, следующая таблица показывает родовой функции foo наряду с одним выходом API, который компилятор генерирует для его нескольких форм.

Типовая функция MATLAB
function [Out1, Out2, ..., varargout] = foo(In1, In2, ..., InN, 
varargin)
API, при отсутствии входных параметров
public MWArray foo() 
API, если существует один или несколько входных параметров
public MWArray foo(MWArray In1, MWArray In2...MWArray inN)
API, если существуют дополнительные входные параметры
public MWArray foo(MWArray In1, MWArray In2,      ..., MWArray 
inN
params MWArray[] varargin)

В примере, входные параметры In1, In2, и inN имеют тип MWArray.

Точно так же в случае дополнительных аргументов, params аргументы имеют тип MWArray. (varargin аргумент похож на varargin функция в MATLAB — это позволяет пользователю передавать переменное количество аргументов.)

Примечание

Когда вы вызываете метод класса в своем приложении.NET, задаете все необходимые входные параметры сначала, сопровождаемый любыми дополнительными аргументами.

Функции, вводящие одно целое число, требуют, чтобы явный бросок ввел MWNumericArray отличать сигнатуру метода от стандартной интерфейсной подписи, которая не имеет никаких входных параметров.

Стандартный API

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

Стандартный интерфейс вызова возвращает массив MWArray вместо объекта единого массива.

Стандартный API для родовой функции ни с одним, один, больше чем один или переменное количество аргументов, показывают в следующей таблице.

Типовая функция MATLAB
function [Out1, Out2, ..., varargout] = foo(In1, In2, ..., InN, 
varargin)
API, при отсутствии входных параметров
public MWArray[] foo(int numArgsOut) 
API, если существует один входной параметр
public MWArray [] foo(int numArgsOut, MWArray In1) 
API, если существует два к N входные параметры
public MWArray[] foo(int numArgsOut, MWArray In1,MWArray In2, 
\... MWArray InN) 
API, если существуют дополнительные аргументы, представленные varargin аргумент
public MWArray[] foo(int numArgsOut,MWArray in1,MWArray in2, 
MWArray InN,
params MWArray[] 
varargin)

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

АргументОписаниеДетали
numArgsOutКоличество выходных параметров

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

numArgsOut аргумент должен всегда быть первым аргументом в списке.

In1, In2, ...InNНеобходимые входные параметры

Все аргументы, которые следуют за numArgsOut в списке аргументов входные параметры к названному методу.

Задайте все необходимые входные параметры сначала. Каждый необходимый вход должен иметь тип MWArray или один из его производных типов.

vararginДополнительные входные параметры

Можно также задать дополнительные входные параметры, если код MATLAB использует varargin входной параметр: перечислите дополнительные входные параметры или поместите их в MWArray[] аргумент, помещая массив в последний раз в список аргументов.

Out1, Out2, ...OutNВыходные аргументы

Со стандартным интерфейсом вызова все выходные аргументы возвращены как массив MWArray.

API feval

В дополнение к методам в одном API и стандартном API, в большинстве случаев, продукт MATLAB Compiler SDK производит дополнительный перегруженный метод. Если оригинальный код MATLAB не будет содержать выходных аргументов, то компилятор не сгенерирует feval интерфейс метода.

Рассмотрите функцию со следующей структурой:

function [Out1, Out2, ..., varargout] = foo(In1, In2, ..., InN, 
varargin)

Компилятор генерирует следующий API, известный как feval interface,

public void foo 
            (int numArgsOut,
             ref MWArray [] ArgsOut, 
             MWArray[] ArgsIn)

где аргументы следующие:

numArgsOutКоличество выходных параметров

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

Этот номер обычно совпадает с количеством выходных аргументов, которые следуют. varargout массив рассчитывает как всего один аргумент, если существующий.

ref MWArray [] ArgsOutВыходные аргументы

Следующий numArgsOut все выходные параметры оригинального кода MATLAB, каждый перечисленный в том же порядке, как они появляются на левой стороне оригинального кода MATLAB.

ref атрибут снабжает все выходные аргументы предисловием, указывая, что эти массивы передаются ссылкой.

MWArray[] ArgsInВходные параметры

MWArray типы или поддерживаемые типы примитивов.NET.

Когда вы передаете экземпляр MWArray введите, базовый массив MATLAB передается непосредственно вызванной функции. Нативные типы сначала преобразованы в MWArray типы.

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