Main Content

C++ ビルド環境のテスト

C++ サンプル testFeval の作成

C++ 用の MATLAB® エンジン API を使用して、アプリケーションをビルドするためのインストールと環境をテストするには、次の C++ コードを testFeval.cpp という名前のファイル (任意の名前を使用可能) に保存します。

#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;
}

サポートされている C++ コンパイラの選択

MATLAB コマンド プロンプトで、以下を入力します。

mex -setup -client engine C++

インストールされているコンパイラから使用するものを選択します。サポートされているコンパイラの最新の一覧については、サポートされるコンパイラを参照してください。

testFeval サンプルのビルド

エンジン アプリケーションをビルドするには、次のコマンドを入力します。mex コマンドにより、現在のフォルダーに実行可能ファイルが保存されます。

mex -v -client engine testFeval.cpp

ランタイム環境の設定

プラットフォーム固有のランタイム環境変数を設定します。

オペレーティング システム変数パス

Windows®

PATH

matlabroot\extern\bin\win64

Apple シリコン搭載の macOS

DYLD_LIBRARY_PATH

matlabroot/extern/bin/maca64

Intel® 搭載の macOS

DYLD_LIBRARY_PATH

matlabroot/extern/bin/maci64

Linux®

LD_LIBRARY_PATH

matlabroot/extern/bin/glnxa64:matlabroot/sys/os/glnxa64

testFeval サンプルの実行

プログラムを呼び出します。

!testFeval.exe

このプログラムからの出力は以下のようになります。この場合、データ配列の数値の 1 つが負であるため、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

参考

|

関連するトピック