Контейнер для входов и выходов от функций C++ MEX
MEX-функции передают входы и выходы следующим matlab::data::Array
объекты, содержащиеся в matlab::mex::ArgumentList
объекты. The MexFunction::operator()
принимает два аргумента, один для входов и один для выходов, определенных как matlab::mex::ArgumentList
.
ArgumentList
является оберткой, позволяющей проводить итерацию по базовым наборам, содержащим входные и выходные данные.
Пространство имен: | matlab::mex |
Включите: | mex.hpp |
matlab::data::Array operator[](size_t idx)
Включает []
индексация в элементы ArgumentList
.
| Индекс в элементы входного массива, которые являются входными параметрами в MEX-функцию |
| Итератор, указывающий на первый элемент в |
Вызов MEX-функции из MATLAB® с массивом, скаляром и вектором символов в качестве входов и с одним выходом:
a = myMEXFunction(array, scalar, 'character vector')
Присвойте первый входной параметр TypedArray
, второй вход в скаляр const
double
(предположим, что оба типа double
в MATLAB), и третий вход как matlab::data::CharArray
.
void operator()(matlab::mex::ArgumentList outputs, matlab::mex::ArgumentList inputs) { matlab::data::TypedArray<double> inArray = inputs[0]; const double inScalar = inputs[1][0]; matlab::data::CharArray inChar = inputs[2]; result = ... outputs[0] = result; }
iterator_type begin()
Возвращает итератор, указывающий на первый элемент в ArgumentList
массив.
|
Итератор, указывающий на первый элемент в |
Создайте вектор из входных параметров.
void operator()(matlab::mex::ArgumentList outputs, matlab::mex::ArgumentList inputs) { std::vector<matlab::data::TypedArray<double>> vectorDoubles(inputs.begin(), inputs.end()); ... }
iterator_type end()
Возвращает итератор, указывающий мимо последнего элемента в ArgumentList
массив.
|
Итератор, указывающий мимо последнего элемента в |
size_t numArgs size()
Возвращает количество элементов в списке аргументов. Используется для проверки количества входов и выходов, заданных в узле вызова.
|
Размер |
Определите, вызывается ли MEX-функция с тремя входными параметрами.
class MexFunction : public matlab::mex::Function { public: void operator()(matlab::mex::ArgumentList outputs, matlab::mex::ArgumentList inputs) { if (inputs.size() == 3) { // MEX function called with three input arguments ... } }
bool empty()
Возвращает логическое значение, указывающее, пуст ли список аргументов.
| Возвращает логический |
Определите, вызывается ли MEX-функция без входных параметров.
class MexFunction : public matlab::mex::Function { public: void operator()(matlab::mex::ArgumentList outputs, matlab::mex::ArgumentList inputs) { if (inputs.empty()) { // MEX function called with no input arguments ... } }