-3

私は、mex システムで、matlab で使用するために c で記述された特定の関数を使用したいと考えています。これをRに移植する方法についてのアイデア/経験はありますか?

コメントはこれが曖昧であると言っているので、いくつかの詳細。Rで使用するために必要な、適切に作成された特定のmatlab関数があります(残りのコードはすべてRにあります)。この関数には空の m ファイルがあり、ドキュメントのみがあります。すべての作業は対応する .c ファイルにありますが、これは matlab で使用するために特別に記述された C コードであるため、mx 関数への呼び出しが多数含まれています。これは、matlab の内部生活へのフックであると理解しています。

データ ファイルを介して通信するという提案は機能しません。反復アルゴリズム内でこの関数が必要です。

4

1 に答える 1

1

このpdfファイルはあなたにいくつかのヒントを与えるかもしれません。CとRの使用経験はありませんが、可能だと思います。

ファイルに記載されていない方法の1つは、MATLAB / Rプログラムを使用して、Cプログラム(例)に入力する数値のテキストファイルを書き出しc_data.dat、システムコマンドを使用することです。いくつかの出力番号を吐き出す前に、データファイルを処理するスタンドアロンCプログラムを呼び出します(例c_output.dat)。次に、MATLAB/Rプログラムにファイルからデータを読み取らせます。

MATLABでは、これは次のようになります。

%# custom function to write to file
function_write_data( my_data_matrix, 'c_data.dat'); 

%# call the c program
system('./c_program c_data.dat c_output.dat');

%# read the results
my_results_matrix = function_read_data('c_output.dat');

(私はR構文に自信がありません-あなたはそれを自分で解決する必要があります!)

シナリオでのこれの利点は、RとMATLABの両方にまったく同じCプログラムを使用できることです。ただし、読み取り/書き込み関数を作成する必要があります。シナリオによっては、読み取り/書き込みのオーバーヘッドが非常に大きくなる可能性があります(つまり、速度が著しく向上することはありません)。

于 2012-10-05T22:45:18.907 に答える