Main Content

インターリーブされた複素数 API を使用するために MEX ファイルをアップグレードする必要があるか

MEX ファイルのビルドを続行するために MEX ソース コードを更新する必要はありません。mex コマンドは既定で -R2017b API を使用します。ただし、MATLAB® の将来のバージョンでは、mex はインターリーブされた複素数 API -R2018a を既定で使用するため、ビルド コマンドの変更が必要になります。したがって、MATLAB のバージョンが変わっても確実に望ましい動作が得られるようにするために、ビルド スクリプトに互換性フラグ -R2017b を追加してください。

既存の MEX 関数を実行できるか

既存のバイナリ MEX ファイルは、インターリーブされた複素数 API で使用する場合、そのファイルをアップグレードせずに実行できます。ただし、その他の非互換の問題により、既存の MEX 関数の実行が妨げられることがあります。関数が正しく実行されない場合、関連する MATLAB リリース ノートで mex を検索し、「互換性についての考慮事項」のトピックを確認してください。

ソース MEX ファイルをアップグレードしなければならないか

ソース コードの状態次のアクション
MEX 関数で複素数を使用していません。

関数が複素データ入力を正しく扱っていることを確認してください。複素配列における mxGetPr (C)/mxGetPr (Fortran) および mxGetData (C)/mxGetData (Fortran) の呼び出しは推奨されません。

MathWorks では、MATLAB のバージョンが変わっても確実に望ましい動作が得られるように、コードを更新して MX_HAS_INTERLEAVED_COMPLEX マクロを使用するか、mex -R2017b オプションを使用してビルドすることを推奨します。

mxGetData または mxSetData を使用している場合、型付きデータ アクセス関数で置き換えることを検討してください。詳細については、インターリーブされた複素数 API の項を参照してください。

コードの更新計画なし。

MEX 関数で複素数を使用している場合、オプトアウトを選択したことになります。MathWorks では、互換性フラグ -R2017b を使用してビルドすることを推奨します。

コードで複素数を処理している場合、MATLAB が互換性インターフェイスにアクセスするため、パフォーマンスへの影響が生じることがあります。

コードの更新を予定しています。どこから始めたらよいですか。

ソース コードを更新するには、インターリーブされた複素数 API を使用するように MEX ファイルをアップグレードを参照してください。

MEX 関数で複素数を使用していますが、ソース コードへのアクセス権限がありません。

ソース コードの所有者に、インターリーブされた複素数 API を使用するように MEX ファイルをアップグレードの手順に従うよう依頼してください。

サードパーティ製ライブラリで複素数を使用しています。MEX コードを使用して、MATLAB 式の複素数表現を、ライブラリの複素数表現に変換する必要があります。

ライブラリの複素数表現を特定します。表現が、MATLAB で使用するインターリーブされた表現に近い場合もあります。

また、メモリ内の複素数を表現する方法の選択肢がライブラリに存在することもあります。この場合、ベンダーのドキュメンテーションを参照し、MATLAB のインターリーブされた表現に最も近い表現を選択してください。

MEX 関数でエラーが発生します。

ソース コードから MEX ファイルを再コンパイルしなければなりません。-R2017b フラグを使用しても問題が解決しない場合、ソース コードに非互換の問題がある可能性があります。非互換の詳細については、既存の MEX 関数を実行できるかを参照してください。MathWorks では、インターリーブされた複素数 API を使用するように MEX ソース コードを更新することを推奨します。

関連するトピック