Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

evalin

指定したワークスペースで MATLAB 式を実行する

説明

evalin(workspace,expression) は、指定されたワークスペースの変数を使用して expression で表される MATLAB® コードを評価します。

メモ

セキュリティについての考慮事項: 信頼されていないユーザー入力を使用して evalin を呼び出す場合は、予期しないコード実行を回避するために入力を検証してください。信頼されていないユーザー入力の例としては、知らないユーザーからのデータや制御できないソースからのデータが挙げられます。この懸念事項に対処しなければならない場合は、以下の方法を検討してください。

  • evalin への入力を検証します。まず、実行可能な演算を検索します。その他の演算が見つかった場合は、実行を許可しないようにします。

  • evalin を別のものに置き換えます。詳細については、関数 eval の代替方法を参照してください。

パフォーマンスについての考慮事項: ほとんどの場合、関数 evalin を使用すると、他の MATLAB 関数や言語構成を使用するよりも効率も下がり、結果のコードは読み取りやデバッグが困難になる可能性があります。evalin の代替手段の使用を検討してください。

[output1,...,outputN] = evalin(workspace,expression) は、expression からの出力を指定された変数で返します。この構文が有効になるようにするには、式 output1,...,outputN = expression も有効である必要があります。

すべて折りたたむ

関数 evalin を使用して、MATLAB ベース ワークスペースの変数の値を取得し、それを新しい変数に保存します。

var を、関数 magic によって返される 5 行 5 列の行列として定義します。

var = magic(5);

MATLAB ベース ワークスペースの変数 var の値を取得し、変数 v に保存します。

v = evalin('base','var')
v =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

入力引数

すべて折りたたむ

式を評価するワークスペース。'base' または 'caller' として指定します。

MATLAB のベース ワークスペースは、MATLAB のコマンド ラインから見ることのできるもので、デバッガーの中のものとは異なります。呼び出し側のワークスペースは、現在実行中の関数を呼び出した関数のワークスペースです。ベース ワークスペースと呼び出し側のワークスペースは、MATLAB コマンド ラインから呼び出された関数の中では同じものです。

メモ

関数 dbup または関数 dbdown を使用してローカル ワークスペースのコンテキストを変更してから evalin('caller',expression) を MATLAB デバッガーで使用すると、MATLAB は、現在のワークスペースのコンテキストから 1 つ上のスタック レベルにある関数のコンテキストで式を評価します。

評価する式。文字ベクトルまたは string スカラーとして指定します。expression は有効な MATLAB 式でなければならず、MATLAB キーワードを含めてはなりません。単語が MATLAB キーワードかどうかを確認するには、関数 iskeyword を使用します。

例: evalin('base','magic(5)')

出力引数

すべて折りたたむ

評価される式からの出力。MATLAB データ型として返されます。

制限

  • evalin('caller',expression) は、呼び出し側のワークスペースの "変数" のみを検索します。呼び出し側の "関数" は検索しません。このため、関数 evalin を使用して、呼び出し側で定義された関数のハンドルを作成することはできません。

  • 関数 evalin は、式の評価に対して再帰的に使用できません。たとえば、ステートメント evalin('caller','evalin(''caller'',''x'')') は無効です。

  • 無名関数、入れ子関数、または入れ子関数を含む関数内で evalin を使用した場合、評価された expression は変数を作成しません。

ヒント

  • MATLAB パーサーでコードに対して厳しいチェックを行い、把握できないエラーやその他の予期しない動作を防ぐために、関数 evalin への入力に出力引数を含めないでください。たとえば、ステートメント evalin('base',['output = ',expression]) は推奨されません。

    代わりに、関数 evalin の出力引数を指定して、評価された式の結果を保存します。以下に例を示します。

      output = evalin('base',expression)

バージョン履歴

R2006a より前に導入