Классы преобразования данных
MWArray
MWIndexArray
MWCellArray
MWCharacterArray
MWLogicalArray
MWNumericArray
MWStructArray
MWArray
и MWIndexArray
являются абстрактными классами. Другие классы представляют стандартные типы массива MATLAB®: ячейка, символ, логический, числовой, и struct. Каждый класс предоставляет конструкторам и набору свойств и методов для создания и доступа к состоянию базового массива MATLAB.
Существуют некоторые типы данных (массивы ячеек, массивы структур и массивы комплексных чисел) обычно используются в продукте MATLAB, которые не доступны как нативные типы.NET. Чтобы представлять эти типы данных, необходимо создать экземпляр eitherMWCellArray
, MWStructArray
или MWNumericArray
.
Все данные, возвращенные от функции MATLAB до метода.NET, представлены как экземпляр соответствующего подкласса MWArray
. Например, массив ячеек MATLAB возвращен как объект MWCellArray
.
Возвратитесь данные автоматически не преобразованы в нативный массив. Если необходимо получить соответствующий нативный тип массива, вызовите метод ToArray
, который преобразовывает массив MATLAB в соответствующий собственный тип данных, за исключением ячейки и массивов структур.
Вот фрагмент кода, который показывает, как преобразовать значение double
(5.0
) в тип MWNumericArray
:
MWNumericArray arraySize = 5.0; magicSquare = magic.MakeSqr(arraySize);
После того, как значение double
преобразовано и присвоено переменной arraySize
, можно использовать аргумент arraySize
с основанным на MATLAB методом без дальнейшего преобразования. В этом примере основанным на MATLAB методом является magic.MakeSqr(arraySize)
.
Для каждой функции MATLAB, которую вы задаете как часть блока.NET, продукт MATLAB Compiler SDK™ генерирует API на основе подписи функции MATLAB, можно следующим образом:
Подпись single output, которая принимает, что только один вывод требуется и возвращает результат в одном MWArray
, а не массиве MWArray
.
Подпись standard, которая задает входные параметры типа MWArray
и возвращает значения как массив MWArray
.
Подпись feval, которая включает оба аргумента ввода и вывода в список аргументов вместо того, чтобы возвратить выходные параметры как возвращаемое значение. Выходные аргументы задаются сначала, сопровождаются входными параметрами.
Обычно вы используете один выходной интерфейс для функций 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, |
API, если существуют дополнительные входные параметры | public MWArray foo(MWArray In1, MWArray In2, ..., |
В примере входные параметры In1, In2
и inN
имеют тип MWArray
.
Точно так же в случае дополнительных аргументов, аргументы params
имеют тип MWArray
. (Аргумент varargin
подобен функции varargin
в MATLAB — это позволяет пользователю передавать переменное количество аргументов.)
Когда вы вызываете метод класса в своем приложении.NET, задаете все необходимые входные параметры сначала, сопровождаемый любыми дополнительными аргументами.
Функции, вводящие одно целое число, требуют, чтобы явный бросок ввел MWNumericArray
, чтобы отличить сигнатуру метода от стандартной интерфейсной подписи, которая не имеет никаких входных параметров.
Обычно вы используете стандартный интерфейс для функций 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 | Количество выходных параметров | Целое число, указывающее на количество выходных параметров, вы хотите, чтобы метод возвратился. Аргумент |
In1, In2, ...InN | Необходимые входные параметры | Все аргументы, которые следуют Задайте все необходимые входные параметры сначала. Каждый необходимый вход должен иметь тип |
varargin | Дополнительные входные параметры | Можно также задать дополнительные входные параметры, если код MATLAB использует вход |
Out1, Out2, ...OutN | Выходные аргументы | Со стандартным интерфейсом вызова все выходные аргументы возвращены как массив |
В дополнение к методам в одном 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 | Количество выходных параметров | Целое число, указывающее на количество выходных параметров, вы хотите возвратиться. Этот номер обычно совпадает с количеством выходных аргументов, которые следуют. Массив |
ref MWArray [] ArgsOut | Выходные аргументы | Следующим Атрибут |
MWArray[] ArgsIn | Входные параметры |
Когда вы передаете экземпляр типа |