2012-08-31 14 views
7

ちょうど具体性のために、以下の超簡単なPythonスクリプトを検討し、ファイルにadd_emと呼ばれますスクリプト、と、このように、Unixのコマンドラインから、それに引数を渡す:私は、スクリプトを実行可能にしている場合:私は今、これを実行することができます</p> <pre><code>#!/usr/bin/env python # script name: add_em from sys import argv x = int(argv[1]) y = int(argv[2]) x_plus_y = x + y print '%d' % x_plus_y </code></pre> <p>:Unixのコマンドラインから引数を取得することができますMATLABスクリプトが

% python add_em 3 8 
11 

、私も012に言及する必要はありません。コマンドラインで:

% chmod +x add_em 
% add_em 41 -29 
12 

誰かが書き込み(および実行)する方法私を見ることができますMATLABスクリプトそれがない以上、正確にスクリプトのように動作するように?特に、UNIXのコマンドライン(例えば、MATLAB GUIの「コマンドライン」とは対照的に)からその引数を読み取り、それらの数値和を標準出力に出力することができなければならない。

注:このスクリプトは、 "スタンドアローン" こと必要はありません。 IOWでは、MATLABがローカルにインストールされていると仮定しても、コマンドラインでmatlabと言い換えることもできます(上記の最初の形式と同様に、pythonインタープリタが明示的にコマンドラインで呼び出されます)。

ありがとうございます!

PS:言うまでもなく、このスクリプトは「堅牢」の対立ですが、私の目的は簡単に伝えられる例を作り出すことでした。

+0

ここにあなたの質問に対する答えがあります:http://stackoverflow.com/questions/3335505/how-can-i-pass-command-line-引数をスタンドアロンにする - matlab-executable-runningを実行する – piokuc

+0

***いいえ、そのクエストnはスタンドアローン*(ローカルにインストールされたMATLABのコピーがない状態で実行されることを意図しています)です。だからこそ私は***が私の質問で、私はこれを必要としないと強調した。特に、私は*** MATLABスクリプトをコンパイルしたくありません。 – kjo

答えて

8

あなたは、MATLAB関数が​​

function add_em(x, y) 
x_plus_y = x + y; 
disp(x_plus_y); 
exit; 

の内側にあなたが望むものをやっていた後、-rスイッチを使用してUnixコマンドラインから呼び出すことができます。例:

matlab -nodesktop -nojvm -nosplash -r "add_em(3, 8)" 

-オプションは、デスクトップ、Javaのを抑制し、スクリプト/関数が追加のオーバーヘッドなしに実行されますので、スプラッシュ。

あなたはさらに、たとえば、(任意の計算のための)ログファイルに出力をリダイレクトするか、テーリングによりMATLABの歓迎/著作権メッセージを抑制することができ、何かを得るために、出力端子

matlab -nosplash -nodesktop -nojvm -r "add_em(3, 8)" | tail -n 3 

アップデートに印刷します:ちょうどこの記事を見つけた/関連情報の回答:suppress start message of Matlab

+0

すばらしい答えをありがとう。私はそれ以上の議決権を行使したいと思う。 – kjo

+3

これについて何か明確にすることはできますか? MATLABは関数を定義する.mファイルの場所をどのように知っていますか?これが機能するには特定の場所に置く必要がありますか? –

関連する問題

 関連する問題