15

MatlabとRの間でデータを共有するための比較的効率的な方法が必要です。

SaveRとMATLABR -linkを確認しましたが、SaveRは最初にMatlabのバイナリデータをテキスト文字列として フォーマットしてからASCIIファイルに出力します。これは大きなデータセットには効率的ではなく、MATLAB R-linkはWindowsでのみ機能します( COMベースのインターフェイス)。

アップデート:

Dirkは、 SaveRやMatlabR -linkよりもこの問題のより良い解決策のリストを投稿しました。また、最近RAMディスクについて学び(いくつかの実装例についてはここここを参照)、MatlabとR(または同様の計算環境)間で大規模なデータセットを共有するタスクをさらに容易にする可能性があると考えました。これは私を次の質問に導きます:

データがMatlabまたはRのネイティブデータコンテナー内のマシンのメモリに収まると仮定します。

  1. これまでにリストされたソリューションのいずれかがRAMディスクにより適していますか?

  2. 二次ストレージソリューションの代わりにRAMディスクを扱うときに考慮すべき追加の考慮事項はありますか?

ありがとう!

4

2 に答える 2

17

いくつかのアイデアと、R 側のことについてもっと知っているという警告があります。

  • CRANの R.matlabパッケージが役立ちます。このパッケージは、MAT ファイルを読み書きする方法を提供します。また、ローカルまたはリモート ホストで実行されている Matlab v6 以降との通信 (コードの評価、オブジェクトの送信と取得など) も可能になります。

  • あなたが示唆したように、HDF5は可能性がありますが、CRANパッケージhdf5のRサポートはやや基本的であると聞きました

  • NetCDFが代替手段になる場合があります。CRAN にはパッケージRNetCDFncdf、および ncdf4があります

  • データベース、特に SQLite や H4 のような軽量でファイルベースのデータベースを使用し、どちらも R をサポートしています

  • 一般的なシリアライゼーション/デシリアライゼーション形式を使用します。R はRProtoBufを介して Google Protocol Buffers をサポートしており、Googleは Matlab のprotobuf-matlabを指しています。

  • 自分で書いてください!特に、大きな長方形の行列のような基本的なものだけが必要な場合は、直接バイナリ書き込みに勝るものはありません。私はこれを1年前にOctave(Matlabに近い)で行いました。mex ファイルを介して Matab を拡張できます。R には API と Rcpp のようなヘルパーがあります。データ セットが大きいほど、変換を保存するときに魅力的に見える場合があります。

于 2011-01-22T23:11:43.383 に答える
1

Matlab は、最新バージョン (「保存」と「読み込み」) でネイティブに HDF5 を使用します。R用のパッケージがあります。それならHDF5が良い解決策かもしれません。

于 2011-01-22T23:12:41.740 に答える