Контейнер для входов и выходов функций C++ MEX
Функции C++ MEX передают входы и выходы как matlab::data::Array объекты, содержащиеся в matlab::mex::ArgumentList объекты. 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
...
}
}