ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

matlabFunctionBlock

MATLAB Function ブロックへのシンボリック式の変換

    メモ:    emlBlock は削除されました。代わりに matlabFunctionBlock を使用してください。

構文

matlabFunctionBlock(block,f)
matlabFunctionBlock(block,f1,...,fN)
matlabFunctionBlock(block,f,Name,Value)
matlabFunctionBlock(block,f1,...,fN,Name,Value)

説明

matlabFunctionBlock(block,f) は、シンボリック式または関数 f を MATLAB® Function ブロックに変換し、Simulink® モデルで使用できるようにします。ここで、block は、作成または変更するブロックの名前を指定します。

matlabFunctionBlock(block,f1,...,fN) は、シンボリック式または関数 f1,...,fN のベクトルを、複数の出力をもつ MATLAB Function ブロックに変換します。

matlabFunctionBlock(block,f,Name,Value) は、1 つまたは複数の Name,Value の引数のペアで指定した追加オプションを使用して、シンボリック式または関数 f を MATLAB Function ブロックに変換します。

matlabFunctionBlock(block,f1,...,fN,Name,Value) は、1 つまたは複数の Name,Value の引数のペアで指定した追加オプションを使用して、シンボリック式または関数のベクトル f を複数の出力をもつ MATLAB Function ブロックに変換します。

入力引数

f

シンボリックな式または関数。

f1,...,fN

シンボリックな式または関数のベクトル。

block

作成または変更するブロック名を指定する文字列。

名前/値のペアの引数

オプションの Name,Value の引数ペアをコンマ区切りで指定します。ここで、Name は引数名で、Value は対応する値です。Name は単一引用符 (' ') で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前/値のペア引数を、任意の順番で指定できます。

'functionName'

関数名を指定します。値は文字列でなければなりません。

既定値: 値はブロック名と一致します。

'outputs'

出力端子の名前を指定します。値は文字列のセル配列でなければなりません。エントリの数は、f 内の自由変数の数以上でなければなりません。

既定値: 出力端子の名前は、語 out に出力端子番号を付けたもので、out3 のようになります。

'vars'

変数の順序および対応するブロックの入力端子を指定します。この値は、文字列のセル配列、シンボリック配列またはシンボリック変数のベクトルでなければなりません。エントリの数は、f 内の自由変数の数以上でなければなりません。

既定値: シンボリック式を変換するときの順序は、アルファベット順です。シンボリック関数を変換するときは、入力引数は他の変数の前に出現します。他の変数はアルファベット順に並べ替えられます。

シンボリック式を MATLAB Function ブロックに変換する前に、事前に空のモデルを作成するか、または既存のモデルを開いておきます。

new_system('my_system');
open_system('my_system');

matlabFunctionBlock を使用して、シンボリック式を含むブロック my_block を作成

syms x y z
f = x^2 + y^2 + z^2;
matlabFunctionBlock('my_system/my_block',f);

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

結果のブロックを開いて編集できます。ブロックを開くには、それをダブルクリックします。

function f = my_block(x,y,z)
%#codegen

f = x.^2 + y.^2 + z.^2;

my_system を保存して閉じます。

save_system('my_system');
close_system('my_system');

シンボリック関数を次のように作成します。

syms x y z
f(x, y, z) = x^2 + y^2 + z^2;

f を MATLAB Function ブロックに変換します。

new_system('my_system');
open_system('my_system');
matlabFunctionBlock('my_system/my_block',f);

ブロックを作成し、関数名を my_function に設定します。

syms x y z
f = x^2 + y^2 + z^2;
new_system('my_system');
open_system('my_system');
matlabFunctionBlock('my_system/my_block', f,...
'functionName', 'my_function')

ブロックを作成するときに、入力変数の順序を指定します。

syms x y z
f = x^2 + y^2 + z^2;
new_system('my_system');
open_system('my_system');
matlabFunctionBlock('my_system/my_block', f,...
'vars', [y z x])

ブロックを作成するときに、出力変数および対応する端子の名前を変更します。

syms x y z
f = x^2 + y^2 + z^2;
new_system('my_system');
open_system('my_system');
matlabFunctionBlock('my_system/my_block', f, f + 1, f + 2,...
'outputs', {'name1','name2','name3'})

複数のオプションを同時に使用して、matlabFunctionBlock を呼び出します。

syms x y z
f = x^2 + y^2 + z^2;
new_system('my_system');
open_system('my_system');
matlabFunctionBlock('my_system/my_block', f, f + 1, f + 2,...
'functionName', 'my_function','vars', [y z x],...
'outputs',{'name1','name2','name3'})

次の MuPAD® 式を MATLAB Function ブロックに変換します。

syms x y
new_system('my_system');
open_system('my_system');
f = evalin(symengine, 'arcsin(x) + arccos(y)');
matlabFunctionBlock('my_system/my_block', f);

結果のファイルには、MATLAB 言語で作成された等価な式が含まれます。

function f = my_block(x,y)
%#codegen

f = asin(x) + acos(y);

詳細

すべて展開する

ヒント

  • MuPAD 式または関数を MATLAB Function ブロックに変換するには、f = evalin(symengine,'MuPAD_Expression') または f = feval(symengine,'MuPAD_Function',x1,...,xn) を使用します。matlabFunctionBlock が正しくブロックに変換できない MuPAD 式がいくつかあります。それらの式はエラー メッセージをトリガーしません。「MATLAB と MuPAD の式」のリストにない MuPAD 式または関数を変換する場合は、必ず変換結果を確認してください。結果を検証するためには、結果のブロックを含むシミュレーションを実行することができます。

この情報は役に立ちましたか?