Контейнер для вводов и выводов от MEX-функций C++
MEX-функции C++ передают вводы и выводы как объекты 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
...
}
}