3

私は MATLAB と Perl のアクティブなユーザーであり、MATLAB をプラットフォームとして使用してメイン プログラムを実行したり、Perl や Java クラスなどの他のスクリプトを呼び出したりしています。

ただし、CSV/Excel/txt ファイルを IO 中央値として使用せずに、Matlab で Perl からの出力を再利用する良い方法を見つけたことがありません。

Perl と Matlab の間のコミュニケーションを促進するためのアイデアを本当に感謝しています。または、Matlab で作業するのに便利な他の同様の言語を提案できますか?

よろしくお願いします!

チャオ。

4

4 に答える 4

3

の使い方を学んだ Matlab のヘルプからeval()

multiply.plxperlスクリプトが実行されるとしましょう

$a=$ARGV[0];

$b=$ARGV[1];

$result=$a*$b;

print "$result";  

Matlabで呼び出すだけ

a=perl('multiply.plx','2','3');
b=eval(a);

変数aは文字列ですが、変数bは数値です。ただし、これはスカラーに対してのみ機能します。数値のリスト/ハッシュを行列/ベクトルに変換できませんでした。

于 2012-11-09T13:53:00.177 に答える
1

組み込み関数PERLを使ってみましたか。提供されたPerlスクリプトを実行し、結果を返します。

[result,status] = perl('hello.pl','World')

どこ

hello.pl

$input = $ARGV[0]; 
print "Hello $input.";
于 2012-06-29T08:47:05.380 に答える
0

仲介者としてJavaを試しましたか?何かのようなもの

x      = java.lang.Runtime.getRuntime();
process= x.exec('/bin/perl params');
reader = java.io.BufferedReader(java.io.InputStreamReader(process.getInputStream()));
...
reader.readLine()

データを perl に送信するために、outputstream で同じことを潜在的に行うことができますか? おそらく最も経済的なソリューションではありませんが、比較的簡単に思えます。

于 2012-06-29T08:16:31.083 に答える
0

Matlab から Perl を呼び出す代わりに、Perl から Matlab を呼び出すことをお勧めします。そのために、 Inline::Octaveをお勧めします。うまくいけば、あなたの Matlab コードをあまりオーバーホールしなくても Octave で実行できます。

Perl と Octave を併用して中規模の科学プログラムを構築した成功例があります。Perl は、データの収集、Octave スクリプトおよびバッチ処理の入力の準備に適しています。Octave コードは、コンピューティング タスクのコアにのみ集中できます。PDLも別の選択肢ですが、元のコードを書き直すのが大変だったので、Octave に戻しました。

于 2013-10-08T19:10:43.090 に答える