Main Content

MATLAB Function ブロックと MATLAB System ブロックを使用した Python 関数の呼び出し

この例では、Python® ソート関数と MATLAB Function ブロックおよび MATLAB System ブロックの 2 種類のブロックを使用して、乱数を並べ替える Python® 関数を Simulink® で呼び出す方法を示します。MATLAB® での Python の使用の詳細については、MATLAB から Python モジュールへのアクセス - 入門を参照してください。

MATLAB は、Python の参照実装 (通称 CPython) をサポートします。Mac または Linux® プラットフォームを使用している場合、Python は既にインストールされています。Windows® を使用している場合、https://www.python.org/downloads/ などにある配布版をインストールする必要があります。詳細については、Python を使用するためのシステムの構成を参照してください。

Simulink モデルでの Python 関数の使用

このモデルには、0 から 1 までの 1 行 5 列の double の数値を出力する乱数発生器、数値を並べ替える MATLAB Function ブロックと MATLAB System ブロック、および Display ブロックにつながる手動スイッチが含まれています。

MATLAB Function ブロックは、次のコードの抜粋に示すように、関数 py.sorted を Python から呼び出し、1 行 5 列の double の並べ替えられたリストを出力します。

function y = fcn(u)
    % Sort values of 'u'
    coder.extrinsic('py.sorted');
    ytmp = py.sorted(u);
end

MATLAB System ブロックは、次のコードの抜粋に示すように、関数 py.sortedstepImplの一部として呼び出し、1 行 5 列の double の並べ替えられたリストを出力します。

function y = stepImpl(~,u)
    % Implement algorithm. Calculate y as a function of input u and
    % discrete states.
    y = py.sorted(u);
    y = cellfun(@double,cell(y));
end

このモデルを MATLAB Function ブロックまたは MATLAB System ブロックを使用して実行すると、乱数発生器のブロックで生成される数値の並べ替えられたリストが得られます。この例を次に示します。