Main Content

pyrun

MATLAB からの Python ステートメントの実行

R2021b 以降

    説明

    pyrun(code) は、Python® インタープリターで code 内の Python ステートメントを実行します。

    関数 pyrun を使用して作成された変数は永続的です。それらの変数を後続の pyrun の呼び出しで使用できます。

    outvars = pyrun(code,outputs) は Python で生成された変数を MATLAB® に返します。outputs に Python 変数の名前を指定し、outvars で戻り値を取得します。

    outvars = pyrun(code,outputs,pyName=pyValue) は、1 つ以上の名前と値の引数で渡された MATLAB データを使用して、割り当てられた入出力変数名でコードを実行します。

    すべて折りたたむ

    この例では、Python インタープリターで次の Python ステートメントを実行します。

    greeting = "hello"
    print(greeting)

    MATLAB から Python コードを呼び出します。

    pyrun(["greeting = 'hello'", "print(greeting)"])
    hello

    変数 greeting は Python 名前空間にのみ存在しています。MATLAB では、MATLAB コマンド ラインに print ステートメントの結果が表示されます。

    次の Python コードは、曜日のリストを作成します。

    days = ['Monday','Tuesday','Wednesday','Thursday','Friday']

    リスト関数の Python 変数 days を作成します。MATLAB で変数に mllist という名前を付けます。

    mllist = pyrun("days = ['Monday','Tuesday','Wednesday','Thursday','Friday']","days")
    mllist = 
      Python list with no properties.
    
        ['Tuesday', 'Monday', 'Wednesday', 'Thursday', 'Friday']
    

    次の例では、指定した入力値を使用して Python インタープリターでステートメント a = b*c を実行します。

    pyrun("a = b*c", b = 5, c = 10)

    変数 ab、および c は Python 名前空間にのみ存在しています。ただし、これらの変数は、後続の pyrun の呼び出しで使用可能です。

    md = pyrun("d = a+c", "d")
    md = 60

    次の例では、Python で b*c を実行し、MATLAB 変数で結果を返します。

    res = pyrun("a = b*c", "a", b=5, c=10)
    res = 50

    次の例では、ローカル変数を Python 変数に代入し、MATLAB からアクセスできるようにします。

    モジュール localModule.py を作成します。

    def myFunc():
        print('myFunc executed')
    mvar = 3

    変数 m を作成して mvar にアクセスし、値を MATLAB 変数 out に代入します。

    pyrun("import localModule")
    out = pyrun("m = localModule.mvar","m")

    入力引数

    すべて折りたたむ

    1 つ以上の Python ステートメント。string スカラー、string 配列、文字ベクトル、文字配列、文字ベクトルの cell 配列、または Python 組み込み関数 compile を使用して生成されたスクリプトの Python コード オブジェクトとして指定します。各エントリは 1 行の Python コードを表します。

    単一行ステートメントを呼び出すには、code を string スカラーまたは文字ベクトルとして渡します。複数行の Python ステートメントを呼び出すには、string 配列、文字配列、または文字ベクトルの cell 配列として code を渡します。MATLAB は複数行ステートメントの要素間に改行を挿入します。

    例: pyrun(["a = 3","print(a)"])

    Python code に渡される 1 つ以上の入力引数の名前と値。キーワードと値の引数として指定します。pyName が変数の Python 名で pyValue が割り当てられた値です。pyName1=pyValue1,...,pyNameN=pyValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

    例: pyrun("b*c",b=5,c=10) は、Python ステートメント b*c 用に変数 bc を初期化します。

    1 つ以上の Python 変数名。string 配列として指定します。変数はローカルまたはグローバルにできます。MATLAB は code の出力を outputs で名付けられた各変数に割り当て、outvars に値を返します。

    例: mb = pyrun("b=a+2","b",a=5)

    出力引数

    すべて折りたたむ

    1 つ以上の MATLAB ワークスペース変数名。code から有効な Python 型として返されます。outputs 引数に Python 変数の名前を指定します。Python データにアクセスする場合は、outvars を使用して MATLAB に Python オブジェクトを明示的に返さなければなりません。

    複数の出力を指定するには、大かっこを使用します。たとえば、[res1,res2] = pyrun("a=b*c",["a","b"],b=5,c=10) は 2 つの outvars である res1 および res2 を返します。

    制限

    • pyrun または pyrunfile を使用して定義された Python クラスのインスタンスを MATLAB に返す場合、そのクラスを変更することはできません。クラス定義を変更する必要がある場合は、インタープリターのセッションを再起動します。

      terminate(pyenv)
      pyenv(ExecutionMode="OutOfProcess")

      あるいは、"InProcess" の場合は MATLAB を再起動します。

      関数 pyrun および関数 pyrunfile は、メソッドを通じて他のローカル変数で初期化されたローカル変数をもつクラスをサポートしません。このような使用法の場合は、モジュールを作成し、py. 接頭辞を使用してそのモジュールにアクセスします。

    バージョン履歴

    R2021b で導入