2014-02-21 3 views
1

현재 C++ 프로젝트에서 작업하고 있으며 Matlab 데이터 구조를 사용하는 데 관심이 있습니다 (매트릭스, 배열 등). 내 데이터 유형 (예 : 행렬, 배열 등)을 작성하지 않아도됩니다.C++에서 Matlab 데이터 구조를 사용합니까?

방법이 있습니까? C++에서 Matlab 객체를 완벽하게 사용하려면? 내 프로그램이 실행되는 동안 백그라운드에서 Matlab을 실행하지 않아도됩니다.

편집 : 출발점은 http://www.mathworks.co.uk/help/matlab/calling-matlab-engine-from-c-c-and-fortran-programs.html입니다. 나는 이것을 계속 읽을 것이다.

답변

1

C++과 Matlab을 혼합하여 프로그래밍 할 수 있습니다.

  1. 전화 MATLAB 엔진을 직접 : 추가 정보를 원하시면 this post를 참조하십시오 두 가지 방법이 있습니다. Matlab은 백그라운드에서 실행됩니다.

  2. MATLAB을 독립적 인 공유 라이브러리에 배포하십시오 : 자세한 방법과 예제와 함께 수행 방법에 대해서는 here을 확인하십시오.

1

Matlab 용 C++ 확장 프로그램에서 나는 한 가지를 배웠습니다. C++에서 Matlab 객체를 사용하면 상당한 두통이 생길 수 있습니다.

Matlab 데이터 구조는 C++ 클래스로 노출되지 않습니다. 대신 C와 유사한 API 함수로 조작 할 수있는 포인터를 얻습니다.

Eigen3과 같은 기본 C++ 라이브러리를 사용하는 것이 좋습니다.

1

사용자가보고있는 기능은 실제로 완벽한 객체로 사용하기위한 것이 아닙니다. 과거에 필자는 C 배열을 원시 배열이나 타사 행렬 라이브러리를 사용하여 수행 한 다음이를 Matlab 행렬로 변환하여 반환하는 것이 훨씬 간단하다는 것을 발견했습니다. MATLAB과 C++을 혼합

은 일반적으로 두 가지 방법 중 하나로 수행됩니다

  1. 는 C++ 프로그램이 일부 전문 처리를 할 matlab에 전화를 가졌어요. 이것은 주로 복잡한 매트릭스 알고리즘의 신속한 개발에 유용합니다. 전체 Matlab 엔진을 호출하거나 Matlab 코드 스 니펫을 공유 라이브러리에 패키징하여 배포 할 수 있습니다. (분산 버전은 스크립트와 함께 호출되는 Matlab 런타임의 배포 가능한 사본을 패키지로 제공합니다.)

  2. Matlab 스크립트를 사용하면 일부 전문 처리를 수행하는 C++ 함수를 호출 할 수 있습니다. 이것은 종종 C++ 구현 알고리즘 (예 : 기계 학습 모델)을 임베드하거나 특정 최적화를 처리하는 데 사용됩니다.

이 두 가지 유스 케이스는 모두 Matlab에서 데이터를 전송하는 데 약간의 오버 헤드가 있습니다.

C++에서 사용할 행렬 코드를 찾고 있다면 Boost에 구현 된 것과 같은 다양한 C++ 행렬 라이브러리를 살펴 보는 것이 좋습니다.

3

대신 Armadillo C++ maths 라이브러리를 사용할 수 있습니다. NASA, Boeing, Siemens, Deutsche Bank, MIT, CMU, Stanford 등에서 사용당신은 내가 매트랩 어떤 종류의 네이티브 C++ 라이브러리를 사용하지 선호 MATLAB/OCTAVE http://arma.sourceforge.net/docs.html#syntax

더 잘 알고있는 경우

그들은 좋은 문서와 예제를 가지고있다. 개발과 실행 모두가 빠를 것 같습니다.

관련 문제