evalin
指定したワークスペースで MATLAB 式を実行する
説明
evalin(
は、指定されたワークスペースの変数を使用して workspace
,expression
)expression
で表される MATLAB® コードを評価します。
メモ
セキュリティについての考慮事項: 信頼されていないユーザー入力を使用して evalin
を呼び出す場合は、予期しないコード実行を回避するために入力を検証してください。信頼されていないユーザー入力の例としては、知らないユーザーからのデータや制御できないソースからのデータが挙げられます。この懸念事項に対処しなければならない場合は、以下の方法を検討してください。
evalin
への入力を検証します。まず、実行可能な演算を検索します。その他の演算が見つかった場合は、実行を許可しないようにします。evalin
を別のものに置き換えます。詳細については、関数 eval の代替方法を参照してください。
パフォーマンスについての考慮事項: ほとんどの場合、関数 evalin
を使用すると、他の MATLAB 関数や言語構成を使用するよりも効率も下がり、結果のコードは読み取りやデバッグが困難になる可能性があります。evalin
の代替手段の使用を検討してください。
[
は、output1,...,outputN
] = evalin(workspace
,expression
)expression
からの出力を指定された変数で返します。この構文が有効になるようにするには、式
も有効である必要があります。output1,...,outputN
= expression
例
入力引数
出力引数
制限
evalin('caller',expression)
は、呼び出し側のワークスペースの "変数" のみを検索します。呼び出し側の "関数" は検索しません。このため、関数evalin
を使用して、呼び出し側で定義された関数のハンドルを作成することはできません。関数
evalin
は、式の評価に対して再帰的に使用できません。たとえば、ステートメントevalin('caller','evalin(''caller'',''x'')')
は無効です。無名関数、入れ子関数、または入れ子関数を含む関数内で
evalin
を使用した場合、評価されたexpression
は変数を作成しません。
ヒント
MATLAB パーサーでコードに対して厳しいチェックを行い、把握できないエラーやその他の予期しない動作を防ぐために、関数
evalin
への入力に出力引数を含めないでください。たとえば、ステートメントevalin('base',['output = ',expression])
は推奨されません。代わりに、関数
evalin
の出力引数を指定して、評価された式の結果を保存します。以下に例を示します。output = evalin('base',expression)
バージョン履歴
R2006a より前に導入