3

新しいPythonアプリケーションでmatlabで記述された関数を使用したいと思います。ユーザーが自分のマシンでmatlabを必要としないため、ctypesを使用します。このメソッドをテストしていますが、機能させることができません。私たちはcの知識を欠いています(そしてもっとたくさん...)。これは私たちの簡単なテストMATLAB関数です:

function [ z ] = adding( x,y ) 
    z = x + y; 
end

これをmatlabで共有ライブラリ.dllにコンパイルしました。Pythonインタープリターには、次のものがあります。

import ctypes
dl = ctypes.CDLL('adding.dll') 

matlabで関数にアクセスするコマンドが見つからないため、スタックしています。
私たちは何をすべき ?

4

2 に答える 2

2

簡単な答え - いいえ。

MATLAB で記述されたコードを DLL の形式で C としてエクスポートし、Python 側で ctypes を使用してインターフェイスすることはできないため、後で unix パイプを介した通常の通信 (mlabwrapper など) よりも大幅なパフォーマンスの向上が期待できます。

問題は、そのような DLL が MCR (matlab ランタイム) に依存していることです。DLL には、ソース コードが難読化された形式で含まれています。エクスポートされた関数を呼び出すと、DLL が読み込まれ、ソース コードがアンパックされ、MATLAB のインスタンス (インタープリター) が作成され、コードとその結果が MATLAB JIT と通信されます。この機能は「MATLAB コンパイラ ツールボックス」と呼ばれます。または、OS 実行可能ファイル (同じロジックに従う) を生成することもできます。

C/C++ で書き直します (MATLAB への依存を失います)。

ここのようにプロジェクトをコード生成することが運が悪い場合。コードをプレーンな C で書き直すか、C++ ライブラリを IT++ または Armadillo として使用することを検討してください。

于 2013-08-18T17:49:09.230 に答える