メインコンテンツ

Python コードの実行

ライブ エディターでの Python ステートメントやスクリプト ファイルの実行

R2024a 以降

説明

[Python コードの実行] タスクを使用すると、Python® のコードやファイルを対話的に実行できます。このタスクは、ライブ スクリプト用の MATLAB® コードを自動生成します。ライブ エディター タスクの一般的な情報については、ライブ スクリプトへの対話型タスクの追加を参照してください。

このタスクを使用すると、次を行うことができます。

  • Python コードを記述して実行します。

  • Python ファイル内のコードを実行します。

  • Python 変数を MATLAB ワークスペースに返します。

  • MATLAB データを Python コードに渡します。

  • コマンド ライン引数を指定します。

Run Python statements or script files in the Live Editor

タスクを開く

[Python コードの実行] タスクを MATLAB エディターでライブ スクリプトに追加するには、次を行います。

  • [ライブ エディター] タブで [タスク][Python コードの実行] を選択します。

  • スクリプトのコード ブロック内に、Pythonrun などの関連キーワードを入力します。コマンドの補完候補から Run Python Code を選択します。

すべて展開する

ライブ エディターで [Python コードの実行] タスクを使用して、Python コードを対話的に実行します。[Python コードの実行] タスクで作成された変数は永続的です。それらの変数を後続の [Python コードの実行] タスクで参照できます。

MATLAB 変数 a および b を作成します。

a = 3;
b = 4;

ライブ エディターで [Python コードの実行] タスクを開き、[コード] を入力タイプとして選択します。[Python コードを入力] セクションに、次の Python コードを入力します。Python の math.sqrt 関数は、MATLAB 変数の a および b を入力として使用します。[出力オプション] セクションで [すべてを返す] を選択して、生成されたすべての Python 変数を MATLAB ワークスペースに返し、[出力の表示] チェック ボックスをオンにして変数の値をタスクの出力として表示します。次に、[実行] ボタンをクリックします。

import math

h = math.sqrt(a**2 + b**2)

Run Python Code Live Editor task with parameters described in the example

後続の [Python コードの実行] タスクをライブ スクリプトに追加した場合、そのタスクは、この [Python コードの実行] タスクから ab、および h の値を使用して、以前にインポートされた Python math ライブラリを引き続き使用します。

MATLAB で Python ファイルの Python コードを実行し、生成された一部の Python 変数を MATLAB ワークスペースに返します。

次のステートメントから circumference.py という名前の Python ファイルを作成します。この Python コードは、半径 r を使用して円の円周 c を計算します。

import math 
r = 5
c = 2 * math.pi * r

ライブ エディターで [Python コードの実行] タスクを開き、[ファイル] を入力タイプとして選択します。次に、[Python ファイルを選択] セクションで circumference.py へのパスを指定します。

既定では、ライブ エディター タスクは生成されたすべての Python 変数を MATLAB ワークスペースに返します。[選択した変数を返す] を選択し、[生成された Python 変数] リストから c[出力リスト] に移動して、c のみを返します。[出力の表示] チェック ボックスをオンにして、MATLAB で c の値を確認します。次に、[実行] ボタンをクリックします。

Run Python Code Live Editor task with parameters described in the example

MATLAB でコマンド ライン引数を指定して Python ファイルの Python コードを実行します。

次のステートメントから calculator.py という名前の Python ファイルを作成します。この Python コードは、コマンド ラインでユーザーから 2 つの整数入力 xy を受け取ります。コードは xy を減算して diff に差を格納し、xy を乗算して prod に積を格納します。

import sys

arg_list = list()

for arg in sys.argv:
  arg_list.append(arg)

if len(sys.argv) < 2:
  print("Initialize x and y using integers as command-line arguments.")
  exit()

x = int(arg_list[1])
y = int(arg_list[2])

diff = x - y
prod = x * y

ライブ エディターで [Python コードの実行] タスクを開き、[ファイル] を入力タイプとして選択します。次に、[Python ファイルを選択] セクションで calculator.py へのパスを指定します。

[コマンド ライン引数を指定] セクションで、[+] ボタンを使用して引数を追加し、コマンド ライン引数 5 および 6 を指定します。リストの先頭で指定した引数は arg_list[1] (この場合は 5) で、リストの次の引数は arg_list[2] (この場合は 6) です。[出力の表示] チェック ボックスをオンにして、MATLAB ワークスペースで Python 変数の値を確認します。次に、[実行] ボタンをクリックします。

Run Python Code Live Editor task with parameters described in the example

関連する例

パラメーター

すべて展開する

このタスクは、指定した種類の Python コードに対して動作します。

  • コード[Python コードを入力] セクションのテキスト ボックスに Python ステートメントを入力します。

  • ファイル[Python ファイルを選択] セクションで Python ファイルへのパスを指定します。

次の方法で、MATLAB ワークスペース変数をタスクの Python コードに渡すことができます。

  • MATLAB 変数をタスクの Python 変数に代入します。

  • MATLAB 変数をタスクの Python 関数に渡します。

  • MATLAB 変数をタスクの Python 演算のオペランドとして使用します。

入力タイプとして [コード] を選択した場合は、次のようになります。

  • 作成した Python 変数は永続的です。同様に [コード] を入力タイプとして使用する後続の [Python コードの実行] タスクで Python 変数を参照できます。変数が永続的であるのは、[Python コードの実行] タスクが pyrun を利用しているためです。

  • タスクで作成した Python 変数は、後からコードで作成された同名の MATLAB 変数よりも優先されます。言い換えると、[Python コードの実行] タスクは MATLAB ワークスペースの変数を使用しません。

  • Python ライブラリをインポートした場合、後続のタスクで同じライブラリをインポートする必要はありません。

入力タイプとして [ファイル] を選択した場合、コマンド ライン引数を指定できます。これらの引数は、指定した Python ファイルに入力を渡す場合に役立ちます。[引数] ボックスごとに 1 つの引数を入力します。[+] ボタンをクリックしてさらにコマンド ライン引数を追加し、[–] ボタンをクリックしてコマンド ライン引数をリストから削除します。上下の三角ボタンを使用して、引数の順序を変更できます。

生成された Python 変数のうち、ライブ エディター タスクで MATLAB ワークスペースに返す変数を指定します。

  • すべてを返す ― MATLAB が Python コード内で検出したすべての変数を MATLAB ワークスペースに返します。

  • 選択した変数を返す[出力リスト] 内の変数のみを返します。[生成された Python 変数] リストで変数を選択し、右矢印ボタンをクリックして、[出力リスト] に変数を移動します。

このオプションは、選択した Python 変数をタスク出力として表示するかどうかを制御します。

制限

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

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

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

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

  • Python 型ヒントに基づく型変換は、Python コードが入力として提供される pyrunpyrunfile、または [Python コードの実行] タスクではサポートされていません。

バージョン履歴

R2024a で導入

参考

関数