Main Content

シンボリック式からのMATLABFunction ブロックの生成

matlabFunctionBlockを使用すると、MATLAB®Function ブロックを生成できます。生成されたブロックは Simulink®モデルで使用できます。これは、シミュレーションを実行するコンピューターに Symbolic Math Toolbox™ のライセンスがあるかどうかを問いません。

ブロックの生成と編集

r = sqrt(x^2 + y^2)というシンボリック式を含むモデルを作成したいとします。シンボリック式を MATLAB Function ブロックに変換する前に、事前に空のモデルを作成するか、または既存のモデルを開いておきます。

new_system(“my_system') open_system(“my_system')

シンボリック式を作成し、それをmatlabFunctionBlockコマンドに渡します。ブロック名も指定します。

symsxyr = sqrt(x^2 + y^2); matlabFunctionBlock(“my_system/my_block', r)

既存ブロックの名前を使用する場合、matlabFunctionBlockコマンドは既存ブロックの定義を変換されたシンボリック式に置き換えます。

生成されたブロックを開いて編集できます。ブロックをダブルクリックして開きます。

function r = my_block(x,y) %#codegen r = sqrt(x.^2+y.^2);

ヒント

一部のシンボリック式は MATLAB 関数で表すことができません。matlabFunctionBlockはこれらのシンボリック式を変換できませんが、警告を表示します。これらの式によって未定義の関数呼び出しが行われる可能性があるため、常に変換結果をチェックし、結果として得られたブロックを含むシミュレーションを実行して結果を確認します。

入力端子の順序の制御

matlabFunctionBlockは、シンボリック式から入力変数および対応する入力端子をアルファベット順に生成します。入力変数の順序を変更するには、varsオプションを使用します。

symsxymu = sym('mu'); dydt = -x - mu*y*(x^2 - 1); matlabFunctionBlock(“my_system/vdp', dydt,'vars', [y mu x])

出力端子名の指定

既定の設定では、matlabFunctionBlockが生成する出力端子名はoutに出力端子番号を付けたもので、たとえばout3のようになります。outputオプションを使うと,出力端子のカスタム名を使用できます。

symsxymu = sym('mu'); dydt = -x - mu*y*(x^2 - 1); matlabFunctionBlock(“my_system/vdp', dydt,'outputs',{'name1'})