matlab::cpplib::MATLABLibrary::fevalAsync

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

Описание

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

имя функции как 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