2009-10-16 35 views
14

matlabをC++で呼び出し、C++をmatlabで呼び出す方法はいくつかあります。私はそれらをここにリストしようとしていますが、私が何かを見逃している場合はそれを指摘してください。matlab in C C++とC C++ in matlab

matlabでC C++を呼び出すには、2つの方法もあります。最初のものは、C共有ライブラリの関数を呼び出すことです。もう1つは、C++コードをバイナリMEXファイルにビルドすることです。このファイルは、MATLABコマンドラインから呼び出されます。最初の方法は、C共有ライブラリは一般的なものですか?すなわち、matlabのCコードを変更せずに、gccのような一般的なCコンパイラからコンパイルしますか?

C C++でmatlabコードを呼び出すには、2つの方法があります。最初のものはMatlabエンジンです。もう1つは、MATLAB Compiler mccを使用してMATLABコードからCライブラリまたはC++共有ライブラリを作成することです。

さらに、matlabとC++は、いくつかのファイル(マットファイル、テキストファイルなど)との間でデータの書き込みと読み取りを介して通信できます。

それぞれの目的を達成するための複数の方法がありますが、どちらを使用するのが最適なケースを教えてください。つまり、C共有ライブラリの関数を呼び出して、CのC++コードをバイナリMEXファイルにビルドします.Matlabエンジンは、MATLABコードをCのC++共有ライブラリにコンパイルします。

ありがとうございました!

+0

C/C++と呼ばれる言語はありません。 –

+11

「Cおよび/またはC++」の意味を理解しています – Tim

+1

Cの回答はC++の回答よりもずっと短くなる場合もあります(場合によってはCとXの間のインターフェイスよりもはるかに簡単です) 、C++の答えは "Cでラッパーを書く")。どちらがあなたにもっと関係していますか? –

答えて

8

私は、MATLABのCまたはC++関数を呼び出すことに専念しています。共有ライブラリーの関数を呼び出すことと、MEXファイルから関数を呼び出すことの唯一の違いは、共有ライブラリーではコマンド行タイプの関数である 'calllib'で関数を呼び出さなければならないということですあなたはあたかも組み込み関数であるかのように関数を呼び出すので、インタフェースは少しきれいです。

あなたがのための接着剤としてMATLABを使用しているC++(共有ライブラリでC++を使用するためのラッパーを記述する必要があります)

  • を使用している

    • 場合は私の提案は、MEXファイルを使用することです多数の最適化されたCまたはC++ルーチン。あなたはそれらをきれいに呼び出すことができます。

    使用する共有ライブラリの場合

    • あなたは既に修正せずに使用することができ、既存のCライブラリを持っています。
    • C関数の呼び出し回数が少なくて済みます。

    本当に、インターフェイスに降ります。私は個人的には、MATLABからCまたはC++関数への最もクリーンなインターフェイスを提供するので、MEXファイルルートを好みます。標準のMATLAB型を持つ別の関数のように呼び出すことができます。共有ライブラリを使用すると、ライブラリ関数にC++(ペルシャ語)にMATLABとMATLABで

    コンテンツC++を使用する方法について

  • 3

    私はMATLABのCコンパイラは本当に特別なものではありません

    (私がそれらを使用していたので、しばらくしている)という名前てきた方法が正しいと思います。異なるコンパイラを使用することは可能です。サポートされているコンパイラのリストlinkを参照してください。これにはgccは含まれていませんが、MS Visual Studioが含まれています。提供されたライブラリとリンクするときに問題が発生します。

    基本的に:Cからmatlabを呼び出すことは、きついインターフェースが必要な場合に行うことです。たとえば、2つのツールを同期させたい場合や、S-function(simulink)に追加情報が必要な場合などです。しかし、そのようなファイルは、最初はMatlab/simulinkによってpropably呼び出されます。

    matlabからcを呼び出すことは、独自のS-functionまたはmatlabの拡張機能を作成する場合に行いたいことです。

    CとC++の間の選択はあなたのものです。空のシートから始めれば、C++を使うことをお勧めします。完全な機能を使用する必要はありませんが、より自由度があります。また、最近ではC++のライブラリが増えています。

    非常に異なる環境に移行する必要がある場合は、C言語を選択してください。例えばC to DSPをコンパイルすることができる。あるいは、Cでレガシーコードが始まっている場合。 CとC++を混在させることは可能ですが、aはちょっと面倒です。このテーマだけでStackOverflowに関する話題が見つかるはずです。

    2

    トレーニングビデオを呼び出す前にフォーマットするいくつかのデータを行う必要がある場合があります。

    1 - イントロ

    • Introduction.wmv [2時00分、1.2メガバイト、800×600]

    2 - C++、MATLABで

    • 基本concepts.wmv [9時04分、5.9メガバイト、800×600]
    • 構成と単純なプロジェクト[8時25分、13メガバイト、800×600]
    • サンプル[2:17、2.7メガバイト、800×600]
    • デバッグ[2時38分、3.4メガバイト、800×600]

    3 - MATLAB C++で

    • MatlabのC++共有DLL.wmv VCからMATLABを使用して[5:42、6.8メガバイト、800×600]
    • ++ [10時52分、14.2メガバイト、800×600]

    Watch or Download from Google

    Download from 4Shared