exponenta event banner

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