Выполните функцию MATLAB из развертываемого архива
Выполните функцию с 1 выводом аргумент MATLAB® Data Array; 1 аргумент входа MATLAB Data Arrray
имя функции как u16string
matlab::data::Array feval(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>())
имя функции как строка
matlab::data::Array feval(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; 0, 2, или больше аргументов входа MATLAB Data Array
имя функции как u16string
matlab::data::Array feval(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>())
имя функции как строка
matlab::data::Array feval(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>())
Выполните функцию с 0, 2, или больше аргументов вывода MATLAB Data Array; любое количество аргументов входа MATLAB Data Array
имя функции как u16string
std::vector<matlab::data::Array> feval(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>())
имя функции как строка
std::vector<matlab::data::Array> feval(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> ReturnType feval(const std::u16string &function, RhsArgs&&... rhsArgs)
имя функции как строка
template<class ReturnType, typename...RhsArgs> ReturnType feval(const std::string &function,RhsArgs&&... rhsArgs)
Выполните функцию с нативными аргументами ввода и вывода с перенаправлением вывода
имя функции как u16string
template<class ReturnType, typename...RhsArgs> ReturnType feval(const std::u16string &function, const std::shared_ptr<StreamBuffer> &output, const std::shared_ptr<StreamBuffer> &error, RhsArgs&&... rhsArgs)
имя функции как строка
template<class ReturnType, typename...RhsArgs> ReturnType feval(const std::string &function, const std::shared_ptr<StreamBuffer> &output, const std::shared_ptr<StreamBuffer> &error, RhsArgs&&... rhsArgs)
Вызовите группированную функцию MATLAB в совместно использованной библиотеке C++:
Без перенаправления стандартного вывода или стандартной погрешности
С перенаправлением стандартного вывода
С перенаправлением стандартного вывода и стандартной погрешности
LhsItem | Одно из следующего:
|
RhsArgs | Последовательность нуля или большего количества аргументов, которые являются одним из следующего:
|
StreamBuffer |
|
MATLABLibrary::feval
вызывает группированную функцию MATLAB в C++, совместно использовал библиотеку и передает имя функции, сопровождаемое аргументами. Если заданная функция не может быть найдена в библиотеке, исключение выдается. По умолчанию функция возвращает любого один объект matlab::data::Array
(если один выходной аргумент ожидается), или вектор объектов matlab::data::Array
(если нуль или несколько выходных аргументов будут ожидаться). В бывшем случае вектор пуст. Путем определения аргумента шаблона можно задать альтернативный тип возврата, который может быть типом примитива, или вектором типов примитивов или кортежем нескольких экземпляров также.
Поддерживаемые нативные типы:
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
является одним из числовых типов.
Нативные данные C++ передали, когда вход преобразован в соответствующие типы MATLAB.
std::vector
преобразован в массив столбца в MATLAB.
Результат функции MATLAB преобразован в ожидаемый тип данных C++, если нет никакой потери области значений.
В противном случае исключение выдается.
| Имя скомпилированной функции 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. |
Нуль или одно из следующих или кортеж любой комбинации их:
Нативный скалярный тип |
std::vector |
matlab::data::Array |
matlab::cpplib::CanceledException | Функция MATLAB отменяется. |
matlab::cpplib::InterruptedException | Функция MATLAB прервана. |
matlab::cpplib::MATLABNotAvailableError | Сеанс работы с MATLAB не доступен. |
matlab::cpplib::MATLABSyntaxError | Функция MATLAB возвратила синтаксическую ошибку. |
matlab::cpplib::MATLABExecutionError | Функция возвращает ошибку MATLAB Runtime. |
matlab::cpplib::TypeConversionError | Результат функции MATLAB не может быть преобразован в специфичный для пользователя тип. |
mysqrt
на C++ разделяемая библиотека// This example assumes that mysqrt is a packaged user-written function that // calls MATLAB's sqrt, which returns the square root of each element in // the array that is passed to it. auto matlabPtr = initMATLABApplication(MATLABApplicationMode::IN_PROCESS, opts); auto libPtr = initMATLABLibrary(*matlabPtr, u"mylib.ctf"); // Initialize a matlab::data::TypedArray with three elements. matlab::data::TypedArray<double> doubles = factory.createArray<double>({1.0, 4.0, 9.0}); // Retrieve the result of the mysqrt call. Since the output // argument is a matlab::data::Array, feval does not require any template // arguments. matlab::data::Array mda = libPtr->feval(u"mysqrt", doubles); // Now we retrieve the first element of that matlab::data::Array. double d1 = mda[0]; std::assert(d1 == 1.0, "unexpected value"); // Pass a native type (a double) directly to mysqrt. Specify that you want // a double (rather than a matlab::data::Array) as the return type. double d2 = libPtr->feval<double>(u"mysqrt", 4.0); std::assert(d2 == 2.0, "unexpected value");
matlab::cpplib::MATLABLibrary::fevalAsync
| matlab::cpplib::MATLABLibrary::waitForFiguresToClose
| matlab::cpplib::convertUTF16StringToUTF8String
| matlab::cpplib::convertUTF8StringToUTF16String
| matlab::cpplib::initMATLABApplication
| matlab::cpplib::initMATLABLibrary
| matlab::cpplib::initMATLABLibraryAsync
| matlab::cpplib::runMain