メインコンテンツ

Python Code

ネイティブ Python コードを Simulink モデルに統合する

R2025a 以降

  • Python Code block

ライブラリ:
Simulink / User-Defined Functions

説明

Python Code ブロックは、ネイティブの Python® コードを Simulink® モデルに統合します。このブロックを使用して、ブロック インターフェイスを指定し、ブロックの初期化、出力、および終了用の Python コードを記述することで、外部コードをインポートしてコードの統合をカスタマイズします。

Python Code ブロックでは、永続データの初期化がサポートされます。永続データには、Python クラス オブジェクトを含めることができます。Python オブジェクトを保存する永続変数を使用して、タイム ステップ間で状態値を保持します。

このブロックを使用して Python コードを統合する手順については、Python Code ブロックを使用した Simulink への Python コードの統合を参照してください。

メモ

このブロックを使用するには、互換性のあるバージョンの Python がシステムにインストールされている必要があります。これに伴い、Linux および Mac では対応する Python 開発ヘッダーのインストールが必要になる場合があります。MATLAB で Python の ExecutionModeInProcess として設定する必要があります。詳細については、Python を使用するためのシステムの構成を参照してください。

Python Code は、Dataflow Subsystem 内のシミュレーションではサポートされていません。また、For Each Subsystem 内に配置された場合、ラピッド アクセラレータ モードでのシミュレーションでもサポートされません。

端子

入力

すべて展開する

入力端子の数は、[ブロック パラメーター] ダイアログ ボックスの [端子とパラメーター] テーブルで [Input] スコープが定義されているシンボルの数で決まります。各入力端子のラベルは、ブロック ダイアログ ボックスの [シンボル] テーブルの [ラベル] フィールドを編集して変更しない限り、[Input] シンボルの名前と同じです。

Python Code では入力としてのバス配列はサポートされません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | bus | fixedpoint

出力

すべて展開する

出力端子の数は、[ブロック パラメーター] ダイアログ ボックスの [シンボル] テーブルで [Output] スコープが定義されているシンボルの数で決まります。各出力端子のラベルは、ブロック ダイアログ ボックスの [シンボル] テーブルの [ラベル] フィールドを編集して変更しない限り、[Output] シンボルの名前と同じです。

Python Code では出力としてのバス配列はサポートされません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | bus | fixedpoint

パラメーター

すべて展開する

Python コードで使用するシンボルとシンボル プロパティ。table として指定します。各シンボルの次の属性を table で入力する必要があります。

  • 名前 — コード内のシンボル名。

    指定する各シンボルは Python オブジェクトを表します。[名前] フィールドは、その Python オブジェクトに付けられた名前として機能します。

  • スコープ — シンボルのスコープ。次のスコープが使用できます。

    • Input — ブロックへの入力。

    • Output — ブロックへの出力。

    • Parameter — ブロック パラメーター マスクに表示されるブロック パラメーター。パラメーターの名前は、シンボルの [ラベル] で定義されます。

    • Persistent — シミュレーション中のタイム ステップ間で値が保持される永続ブロック データ。永続変数を使用して構成された Python Code ブロックでは、連続サンプル時間およびシミュレーションのステップを戻す機能はサポートされません。

      Persistent スコープのシンボルを定義し、そのシンボルの [タイプ] として PythonObject を使用することで、コード セクションまたはタイム ステップ間で任意の Python オブジェクトを共有できます。

  • ラベル — シンボルのラベル。[Input] または [Output] スコープのシンボルでは、このラベルはブロックの端子名として表示されます。[Parameter] スコープのシンボルでは、このラベルはブロック パラメーター マスクに表示されます。[Persistent] スコープのシンボルにラベルを定義することはできません。

  • タイプ — シンボルのデータ型。ドロップダウン リストからデータ型を選択するか、またはカスタム データ型を指定します。PythonObject タイプは、スコープが Persistent であるシンボルに対してのみ設定できます。

  • サイズ — シンボル データのサイズ。サイズ式を使用して出力のサイズを定義することも、-1 を使用してサイズを継承することもできます。

  • 端子 — シンボルの端子インデックス。[Input] または [Output] シンボルでは、[端子] はシンボルに対応する 1 つ以上の端子のブロックにおける端子インデックスを指定します。[Parameter] シンボルの場合、[端子] はブロック パラメーター マスクにシンボルが表示される順序を指定します。

プログラムでの使用

ブロック パラメーター: SymbolSpec
型: SymbolSpec オブジェクト
値: SymbolSpec オブジェクト
既定の設定: Symbol オブジェクトの空の配列

サンプル周期。秒単位で指定します。サンプル時間のタイプおよびサンプル時間の指定を参照してください。ブロックで永続シンボルが定義されている場合、連続サンプル時間は指定できません。

プログラムでの使用

ブロック パラメーター: SampleTime
: string スカラーまたは文字ベクトル
既定の設定: "-1"

ブロックがシミュレーション中に各タイム ステップで実行する出力コード。文字ベクトルまたは string スカラーとして指定します。たとえば、このパラメーターを使用して、外部 python コードから関数を呼び出し、結果に変更を加え、他のブロックに結果を渡す操作を実行します。

プログラムでの使用

ブロック パラメーター: OutputCode
型: 文字ベクトルまたは string スカラー
値: "" | Python code
既定の設定: ""

ブロックがシミュレーションの開始時に 1 回実行する初期化コード。たとえば、このパラメーターを使用して永続シンボルを初期化します。

プログラムでの使用

ブロック パラメーター: StartCode
型: 文字ベクトルまたは string スカラー
値: "" | Python code
既定の設定: ""

ブロックがシミュレーションの終了時に 1 回実行する終了コード。

プログラムでの使用

ブロック パラメーター: TerminateCode
型: 文字ベクトルまたは string スカラー
値: "" | Python code
既定の設定: ""

ブロックの特性

データ型

Booleana | busa | doublea | fixedpointa | integera | singlea

直達

いいえ

多次元信号

はい

可変サイズの信号

いいえ

ゼロクロッシング検出

いいえ

a 実際のデータ型または機能のサポートは、ブロックの実装に依存します。

拡張機能

すべて展開する

バージョン履歴

R2025a で導入