Классы преобразования данных:
MWArray
MWIndexArray
MWCellArray
MWCharacterArray
MWLogicalArray
MWNumericArray
MWStructArray
MWArray
и MWIndexArray
являются абстрактными классами. Другие классы представляют стандартный MATLAB® типы массивов: камера, символ, логический, числовой и структурный. Каждый класс предоставляет конструкторы и набор свойств и методов для создания и доступа к состоянию базового массива MATLAB.
Существуют некоторые типы данных (массивы ячеек, массивы структур и массивы комплексных чисел), обычно используемые в продукте MATLAB, которые недоступны в качестве собственных типов .NET. Чтобы представлять эти типы данных, необходимо создать образец любого из MWCellArray
, 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
. (The 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 | Количество выходов | Целое число, указывающее количество выходов, которые вы хотите вернуть методу. The |
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 | Количество выходов | Целое число, указывающее количество выходов, которые вы хотите вернуть. Это число обычно совпадает с количеством следующих выходных аргументов. The |
ref MWArray [] ArgsOut | Выходные аргументы | Следующие A |
MWArray[] ArgsIn | Входные параметры |
Когда вы передаете образец |