Как загрузить .mat в c ++, используя "Matlab Data / Engine API для c ++" - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь включить .mat в программу на C ++. Однако я не могу использовать обычный "mat.h" для этого из-за внутренних проблем совместимости между Matlab API для C (https://de.mathworks.com/help/matlab/matlab-c-api-to-read-mat-file-data.html) и C ++ (https://de.mathworks.com/help/matlab/matlab-data-array.html).) Кто-нибудь знает о способ достичь этого с помощью нового API?

Заранее спасибо! :)

1 Ответ

0 голосов
/ 03 мая 2018

Хорошо, я получил довольно неоптимальное решение. Для тех, кто может столкнуться с этой проблемой, вот что я получил до сих пор:

#include "MatlabDataArray.hpp"
#include "MatlabEngine.hpp"

    using namespace matlab::engine;
    // Start MATLAB engine synchronously
    std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();
    std::vector<double> labels_cpp;

    // Create figure window
    matlabPtr->eval(convertUTF8StringToUTF16String("m = matfile('labelsOfGist.mat'); labels = m.labels;"));

    //Get figure handle and Units property
    matlab::data::ArrayFactory factory;
    matlab::data::TypedArray<double> labels = matlabPtr->
        getVariable(convertUTF8StringToUTF16String("labels"));

    size_t elements = labels.getNumberOfElements();
    labels_cpp.reserve(elements);
    std::insert_iterator<std::vector<double>> insert_it(labels_cpp, labels_cpp.begin());
    std::copy(labels.begin(),labels.end(), insert_it);

Если кто-то найдет лучшее решение для этого, пожалуйста, дайте мне знать:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...