Выполните функцию 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 |
|
Он передает имя функции, далее приводятся аргументы. Если указанная функция не может быть найдена в библиотеке, выдается исключение.
Поддерживаемые собственные типы:
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
является одним из числовых типов.
| Имя скомпилированной функции MATLAB, которая будет оценена, задается как u16string или string . |
const size_t nlhs | Количество значений возврата. |
const std::vector<matlab::data::Array> args | Аргументы, используемые функцией MATLAB. |
const matlab::data::Array ar g | Аргумент, используемый функцией MATLAB с одним входом. |
const RhsArgs& rhsArgs | Пакет параметров шаблона, состоящий из последовательности из одного или нескольких аргументов, каждый из которых является собственным скаляром. |
const std::shared_ptr<StreamBuffer>& output | Строковый буфер, используемый для хранения стандартного выхода из функции MATLAB. |
const std::shared_ptr<StreamBuffer>& error | Строковый буфер, используемый для хранения выходов об ошибках из функции MATLAB. |
FutureResult | Принимает любой из допустимых типов для |
matlab::cpplib::CanceledException | Функция MATLAB отменена. |
matlab::cpplib::InterruptedException | Функция MATLAB прерывается. |
matlab::cpplib::MATLABNotAvailableError | Этот Сеанс работы с MATLAB недоступен. |
matlab::cpplib::MATLABSyntaxError | Функция MATLAB вернула синтаксическую ошибку. |
matlab::cpplib::MATLABExecutionError | Функция возвращает ошибку MATLAB. |
matlab::cpplib::TypeConversionError | Результат функции 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();
matlab::cpplib::convertUTF16StringToUTF8String
| matlab::cpplib::convertUTF8StringToUTF16String
| matlab::cpplib::initMATLABApplication
| matlab::cpplib::initMATLABLibrary
| matlab::cpplib::initMATLABLibraryAsync
| matlab::cpplib::MATLABLibrary::feval
| matlab::cpplib::MATLABLibrary::waitForFiguresToClose
| matlab::cpplib::runMain