スタンドアロン アプリケーションおよび引数
概要
スタンドアロン アプリケーションは、引数の受け渡しを行わずにアプリケーションを実行するように作成できます。
ただし、任意のコンソール ベースのアプリケーションに入力引数を渡す場合と同じ方法で、MATLAB® Compiler™ を使用して作成されたスタンドアロン アプリケーションに引数を渡すこともできます。
以下のコマンド例を使用して、Windows® または Linux® のコマンド プロンプトから異なるデータ型の入力引数で filename
という名前のアプリケーションを実行します。
ファイル名、数値または文字、行列および MATLAB 変数を渡す
渡す引数 | 使用する構文 | メモ |
---|---|---|
helpfile という名前のファイル | filename helpfile | |
数値または文字 | filename 1 2 3 a b c | 渡す数値と文字の間にコンマなどの区切りを "使用しないでください"。 |
行列を入力 | filename "[1 2 3]" "[4 5 6]" | 空白スペースを表すには、入力引数を二重引用符で囲みます。 |
MATLAB 変数 | for k=1:10 cmd = ['filename ',num2str(k)]; system(cmd); end | MATLAB 変数を入力としてプログラムに渡すには、まず変数を文字ベクトルに変換しなければなりません。 |
引数を使用するスタンドアロン アプリケーションの実行
以下のいずれかのコマンドを使用して、引数を使用するスタンドアロン アプリケーションを MATLAB から呼び出します。
SYSTEM
DOS
UNIX
!
MATLAB 変数の内容を入力としてプログラムに渡すには、まず変数を文字ベクトルに変換しなければなりません。以下に例を示します。
SYSTEM、DOS または UNIX の使用方法
アプリケーションを文字ベクトル (入力引数を含む) として実行するには、コマンド全体を指定します。たとえば、SYSTEM
コマンドを使用して数値と文字 1 2 3 a b c
を渡すには、次のようにします。
system('filename 1 2 3 a b c')
! (感嘆符) 演算子の使用
次のように、MATLAB 内から !
(感嘆符) 演算子を使用することもできます。
!filename 1 2 3 a b c
!
(感嘆符) 演算子を使用する場合、入力行の残りは SYSTEM
コマンドとして解釈されるため、MATLAB 変数は使用できません。
Windows の使用
ダブルクリックによってスタンドアロン アプリケーションを実行する場合、入力引数を指定してスタンドアロン アプリケーションを呼び出すバッチ ファイルを作成することができます。以下に例を示します。
rem This is main.bat file which calls rem filename.exe with input parameters filename "[1 2 3]" "[4 5 6]" @echo off pause
main.bat
のコードに最後の 2 行が追加され、キーが押されるまで、出力を表示しているウィンドウが開いたままになります。
このファイルを保存すると、main.bat
アイコンをダブルクリックすることにより、上記で指定した引数を使用してコードを実行することができます。
デプロイ予定の MATLAB ファイルの使用
実行時に引数を使用する MATLAB ファイルを MATLAB Compiler でもデプロイする予定の場合は、次の点に注意してください。
システム プロンプトから実行可能ファイルへ渡す入力引数は、文字ベクトル入力として受け取られます。異なる形式のデータ (たとえば double) が必要な場合、まず、文字ベクトル入力を MATLAB コードで必要な形式に変換しなければなりません。たとえば、文字ベクトル入力を数値データに変換するには
STR2NUM
を使用できます。スタンドアロン アプリケーションからユーザーに値を返すことはできません。コンパイルされたコードから値を返す唯一の方法は画面に表示するか、ファイルに保存するかのどちらかです。
データを画面に表示するには、以下のいずれかの手順に従います。
セミコロンを使用しないことで、戻り値を出力するコマンドを抑制する。
DISP
コマンドを使用して変数値を表示し、次に、Windows 以外のシステムでリダイレクト (>
演算子) またはパイプ (||
) を使用して、出力を他のアプリケーションにリダイレクトする。
MATLAB ファイルを使用した画面へのデータの表示
MATLAB ファイルを使用して入力引数を受け取り、データを画面に表示するには、2 通りの方法があります。
方法 1
function [x,y]=foo(z); if ischar(z) z=str2num(z); else z=z; end x=2*z y=z^2; disp(y)
方法 2
function [x,y]=foo(z); if isdeployed z=str2num(z); end x=2*z y=z^2; disp(y)