matlab::cpplib::MATLABLibrary::fevalAsync

Выполните функцию MATLAB из развертываемого архива асинхронно

Описание

Выполните функцию с 1 выходом аргумент MATLAB® Data Array и 1 аргумент входа MATLAB Data Array

имя функции как u16string

FutureResult<matlab::data::Array> fevalAsync(const std::u16string &function, const matlab::data::Array &arg, const std::shared_ptr<StreamBuffer> &output = std::shared_ptr<StreamBuffer>(), const std::shared_ptr<StreamBuffer> &error = std::shared_ptr<StreamBuffer>())

имя функции как строка

FutureResult<matlab::data::Array> fevalAsync(const std::string &function, const matlab::data::Array &arg, const std::shared_ptr<StreamBuffer> &output = std::shared_ptr<StreamBuffer>(), const std::shared_ptr<StreamBuffer> &error = std::shared_ptr<StreamBuffer>())

Выполните функцию с 1 аргументом выхода MATLAB Data Array и любым количеством аргументов входа MATLAB Data Array

имя функции как u16string

FutureResult<matlab::data::Array> fevalAsync(const std::u16string &function, const std::vector<matlab::data::Array> &args, const std::shared_ptr<StreamBuffer> &output = std::shared_ptr<StreamBuffer>(), const std::shared_ptr<StreamBuffer> &error = std::shared_ptr<StreamBuffer>())

имя функции как строка

FutureResult<matlab::data::Array> fevalAsync(const std::string &function, const std::vector<matlab::data::Array> &args, const std::shared_ptr<StreamBuffer> &output = std::shared_ptr<StreamBuffer>(), const std::shared_ptr<StreamBuffer> &error = std::shared_ptr<StreamBuffer>())

Выполните функцию с любым количеством аргументов выхода MATLAB Data Array и любым количеством аргументов входа MATLAB Data Array

имя функции как u16string

FutureResult<std::vector<matlab::data::Array>> fevalAsync(const std::u16string &function, const size_t nlhs, const std::vector<matlab::data::Array> &args, const std::shared_ptr<StreamBuffer> &output = std::shared_ptr<StreamBuffer>(), const std::shared_ptr<StreamBuffer> &error = std::shared_ptr<StreamBuffer>())

имя функции как строка

FutureResult<std::vector<matlab::data::Array>> fevalAsync(const std::string &function, const size_t nlhs, const std::vector<matlab::data::Array> &args, const std::shared_ptr<StreamBuffer> &output = std::shared_ptr<StreamBuffer>(), const std::shared_ptr<StreamBuffer> &error = std::shared_ptr<StreamBuffer>())

Выполните функцию с нативными скалярными аргументами ввода и вывода

имя функции как u16string

template<class ReturnType, typename...RhsArgs>

FutureResult<ReturnType> fevalAsync(const std::u16string &function, RhsArgs&&... rhsArgs)

имя функции как строка

template<class ReturnType, typename...RhsArgs>

FutureResult<ReturnType> fevalAsync(const std::string &function, RhsArgs&&... rhsArgs)

Выполните функцию с нативными скалярными аргументами ввода и вывода с перенаправлением вывода

имя функции как u16string

template<class ReturnType, typename...RhsArgs>

FutureResult<ReturnType> fevalAsync(const std::u16string &function, const std::shared_ptr<StreamBuffer> &output, const std::shared_ptr<StreamBuffer> &error, RhsArgs&&... rhsArgs)

имя функции как строка

template<class ReturnType, typename...RhsArgs>

FutureResult<ReturnType> fevalAsync(const std::string &function, const std::shared_ptr<StreamBuffer> &output, const std::shared_ptr<StreamBuffer> &error, RhsArgs&&... rhsArgs)

Вызовите упакованную функцию MATLAB в совместно использованной библиотеке C++ асинхронно:

  • Без перенаправления стандартного вывода или стандартной погрешности:

  • С перенаправлением стандартного вывода:

  • С перенаправлением стандартного вывода и стандартной погрешности:

где,

LhsItemнативный скаляр
RhsArgs

Последовательность одного или нескольких нативных скаляров.

StreamBuffer

std::basic_streambuf<char16_t>

Это передает имя функции, сопровождаемое аргументами. Если заданная функция не может быть найдена в библиотеке, исключение выдается.

Поддерживаемые нативные типы:

  • bool

  • int8_t

  • int16_t

  • int32_t

  • int64_t

  • uint8_t

  • uint16_t

  • uint32_t

  • uint64_t

  • float

  • double

  • std:string

  • std::u16string

  • std::complex<T> где T один из числовых типов.

Параметры

const std::u16string &function

const std::string &function

Имя скомпилированной функции MATLAB, которая будет оценена заданный любой как u16string или string.
const size_t nlhsКоличество возвращаемых значений.
const std::vector<matlab::data::Array> argsАргументы используются функцией MATLAB.
const matlab::data::Array argАргумент используется функцией MATLAB с одним входом.
const RhsArgs& rhsArgs

Пакет параметра шаблона, состоящий из последовательности одного или нескольких аргументов, каждый из которых является нативным скаляром.

const std::shared_ptr<StreamBuffer>& outputБуфер строки раньше хранил стандартный вывод от функции MATLAB.
const std::shared_ptr<StreamBuffer>& errorБуфер строки раньше хранил вывод ошибок от функции MATLAB.

Возвращаемое значение

FutureResult

Берет любой из допустимых типов для LhsItem.

Исключения

matlab::cpplib::CanceledException

Функция MATLAB отменяется.

matlab::cpplib::InterruptedException

Функция MATLAB прервана.

matlab::cpplib::MATLABNotAvailableError

Сеанс работы с MATLAB не доступен.

matlab::cpplib::MATLABSyntaxError

Функция MATLAB возвратила синтаксическую ошибку.

matlab::cpplib::MATLABExecutionError

Функция возвращает ошибку MATLAB.

matlab::cpplib::TypeConversionError

Результат функции MATLAB не может быть преобразован в специфичный для пользователя тип.

Примеры

Выполните написанную пользователем функцию MATLAB repeatdouble на C++ разделяемая библиотека асинхронно

 / Call the function repeatdouble, which iteratively continues to
        // double a number, printing out results along the way.  The 
        // (optional) second and third parameters determine, respectively, how 
        // many iterations should be performed and how many seconds should 
        // elapse between operations. We call the function asynchronously, 
        // then call it again (also asynchronously) with a different base 
        // number before all the iterations from the first call have completed.

        // We pass the arguments to the function as C++ native types (namely 
        // doubles) rather than a md::Array. The return type is also a native 
        // type (a double), so fevalAsync and the FutureResult need to take 
        // "double" as a template parameter.
        mc::FutureResult<double> futureA = lib->fevalAsync<double>(
            mc::convertUTF8StringToUTF16String("repeatdouble"), 10.0, 3.0, 0.5);
        mc::FutureResult<double> futureB = lib->fevalAsync<double>(
            mc::convertUTF8StringToUTF16String("repeatdouble"), 11.0, 3.0, 0.5);
            
        // Get the result once it's ready.
        double resultA = futureA.get();
        double resultB = futureB.get();
Введенный в R2018a