Чтобы протестировать вашу установку и среду, сохраните следующий Код С++ в файле с именем testFeval.cpp (можно использовать любое имя). Чтобы создать приложение механизма, используйте эти команды из своего командного окна:
mex -setup -client engine C++
Выберите установленный компилятор, который вы хотите использовать, когда запрошено mex установите скрипт. Затем вызовите mex команда, чтобы создать вашу программу. Убедитесь, что MATLAB® Engine API для C++ поддерживает компилятор, вы выбираете. Актуальный перечень поддерживаемых компиляторов см. на сайте «Поддерживаемые и совместимые компиляторы».
mex -v -client engine testFeval.cpp
mex команда сохранила исполняемый файл в той же папке.
#include "MatlabDataArray.hpp"
#include "MatlabEngine.hpp"
#include <iostream>
void callSQRT() {
using namespace matlab::engine;
// Start MATLAB engine synchronously
std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();
//Create MATLAB data array factory
matlab::data::ArrayFactory factory;
// Define a four-element typed array
matlab::data::TypedArray<double> const argArray =
factory.createArray({ 1,4 }, { -2.0, 2.0, 6.0, 8.0 });
// Call MATLAB sqrt function on the data array
matlab::data::Array const results = matlabPtr->feval(u"sqrt", argArray);
// Display results
for (int i = 0; i < results.getNumberOfElements(); i++) {
double a = argArray[i];
std::complex<double> v = results[i];
double realPart = v.real();
double imgPart = v.imag();
std::cout << "Square root of " << a << " is " <<
realPart << " + " << imgPart << "i" << std::endl;
}
}
int main() {
callSQRT();
return 0;
}Вот выход из этой программы. В этом случае MATLAB возвращает комплексный массив, потому что одно из чисел в массиве данных отрицательно.
Square root of -2 is 0 + 1.41421i Square root of 2 is 1.41421 + 0i Square root of 6 is 2.44949 + 0i Square root of 8 is 2.82843 + 0i
matlab::engine::MATLABEngine | mex