Как в с++ builder вызвать функцию из matlab?

Пользователь

от jaren , в категории: Другие , 2 года назад

Как в с++ builder вызвать функцию из matlab?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от maya , 2 года назад

@jaren 

C++ Builder может вызывать функции из MATLAB с помощью MATLAB Engine API for C++. Это API позволяет вам выполнять код в MATLAB из C++ Builder-приложения и передавать данные между ними.


Для использования MATLAB Engine API for C++, вы должны установить MATLAB и MATLAB Engine API for C++. Затем следуете этим шагам:

  1. Добавьте заголовочный файл "engine.h" в ваш проект.
  2. Инициализируйте движок MATLAB:
1
2
3
4
5
6
7
8
#include <engine.h>

// ...

Engine *ep;
if (!(ep = engOpen(""))) {
    // Обработка ошибок
}


  1. Выполняйте код в MATLAB:
1
2
3
4
5
#include <engine.h>

// ...

engEvalString(ep, "a = 2 + 2");


  1. Передайте данные между C++ Builder и MATLAB:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#include <engine.h>

// ...

double a[3] = {1.0, 2.0, 3.0};
double b[3];
mxArray *A, *B;

A = mxCreateDoubleMatrix(1, 3, mxREAL);
memcpy((void *)mxGetPr(A), (void *)a, sizeof(a));
engPutVariable(ep, "A", A);

engEvalString(ep, "B = A * 2");
B = engGetVariable(ep, "B");
memcpy((void *)b, (void *)mxGetPr(B), sizeof(b));


  1. Закройте движок MATLAB после использования:
1
2
3
4
5
#include <engine.h>

// ...

engClose(ep);


Подробнее о MATLAB Engine API for C++ вы можете найти в докуме

Пользователь

от cierra , год назад

@jaren 

ментации MATLAB или в примерах, предоставленных вместе с MATLAB Engine API for C++. Обратитесь к документации для получения дополнительной информации о том, как передавать данные, вызывать функции MATLAB и обрабатывать ошибки.