Insert/Edit Node

Function ステップ > Insert/Edit

Insert/Edit Node ウィンドウには以下のエレメントが含まれます:

Node

ファンクションノードの名前

Unit

ファンクションノードの単位は表示用にのみ使用され、パラメータの適合には影響しません。

Expression

ファンクションノードの内容を定義する式

Data

リスト

インポートされたすべてのデータチャンネルが一覧表示されます。

Insert Data into Formula

リスト内で選択されているデータチャンネルを、式に挿入します。

Parameter

リスト

存在するすべてのパラメータが一覧表示されます。

Insert Parameter into Formula

リスト内で選択されているパラメータを、式に入します。

Create

Create Parameter ウィンドウが開き、新しいパラメータを作成することができます。

Import

ファイルオープンダイアログが開き、パラメータリストをインポートすることができます。

Delete

選択されているパラメータを削除します。

Edit

選択されているパラメータについて Edit Parameter ウィンドウを開きます。

Nodes

リスト

存在するすべてのファンクションノードとインポート済みモデルが一覧表示されます。インポート済みモデルがファンクションノード内で使用されている場合は、<model name>_mdl.<output name> というデフォルト名の付いたノードが、各モデル出力に追加されます。

Insert Node into Formula

選択されているノードまたはモデルを式に挿入します。モデルの場合は、開く例のように、ノード名は <model_name>_mdl となります。

計算ボタン

演算子(*/+-)を式に挿入します。

これにより、要素ごとの加減乗除演算が行われます。

平方根演算子 sqrt( を式に挿入します。式の末尾には ) が必要です。

演算子 ^ を式に挿入します。

x^y は、行ごとに xy 乗するものです。

絶対値演算子 abs( を式に挿入します。式の末尾には ) が必要です。

開くabs(-3) => 3

演算子 bswitch( を式に挿入します。式の末尾には ) が必要です。

要素ごとのバイナリスイッチ:

y = bswitch (x, a, b)

y = a for x <= 0

y = b for x > 0

開くbswitch (%speed% > 2000, %Y_1%, %Y_2%)

演算子 multiswitch( を式に挿入します。式の末尾には ) が必要です。

複数の入力要素から選択するセレクタです。

セレクタは1ベースのインデックスを使用します。

y = multiswitch (selector, x1, x2, x3,…)

y[n] = x1[n] for selector[n] = 1

y[n] = x2[n] for selector[n] = 2

y[n] = x3[n] for selector[n] = 3

例­開く
y = multiswitch (selector, x1, x2)
Selector = [2, 1, 2]
x1=[10, 20, 30]
x2 = [100, 200, 300]
y = [100, 20, 300]

開き括弧/閉じ括弧を式に挿入します。

カンマを式に挿入します。

演算子 min( / max( を式に挿入します。式の末尾には ) が必要です。

min = 2つの入力の最小値

max = 2つの入力の最大値

開くmin(%in1%, %in2%), max(%in1%, %in2%)

要素ごとのAND(論理積)を求める演算子 & を式に挿入します。

開く%Speed% > 2000 & %Load% > 6

要素ごとのOR(論理和)を求める演算子 | を式に挿入します。

開く%Speed% > 2000 | %Load% > 6

NOT(論理否定)演算子 ~ を式に挿入します。

~(%x1% & %x2%)

数値列の累積和を求める演算子 cumsum( を式に挿入します。式の末尾には ) が必要です。

開くcumsum(%y%): [1 2 4] ≥ [1 3 7]

演算子 <<===>=> を式に挿入します。

演算子 warnif( を式に挿入します。式の末尾には ) が必要です。

最適化実行後に自動的に行われるチェックを定義することができます。定義された条件が満たされていると、指定の警告メッセージがログウィンドウに出力されます。

warnif演算子を使用するには、ボタンをクリックした後、式のフィールドに条件を挿入します。warnif演算子の構文は以下のとおりです:

y = warnIf(condition, 'warningText')

開く

warnIf(%MapDragTorque%(%Speed%, %Rel_Airmass%) > 0, 'Warning')

上記の例では、最適化実行後にマップパラメータMapDragTorqueのいずれかの値がゼロより大きくなっていると、"Warning" というテキストがログウィンドウに出力されます。

warnIf(%speed% < 0, 'speed less than zero')

この場合は、最適化実行後に速度の値がゼロ未満になっていると、"speed less than zero" という警告が出力されます。

演算子 timeDelay( を式に挿入します。式の末尾には ) が必要です。

これにより、信号を1タイムステップ分だけ遅延させることができます。ボタンをクリックした後、式のフィールドに以下の構文で条件を挿入します:

timeDelay(x, initialValue)

この式では、initialValueが最初のステップで返され、これがファンクション内の次のノードにアクセスするための唯一の方法となります。

開く

timeDelay(%transferFcn%, %setpoint%(1))

この例では、transferFcnからの信号が1タイムステップ分遅延され、入力setpointの1番目の要素に初期値が設定されます。

y = timeDelay(%y%, 0.0)

ここでは y の値が1タイムステップ分遅延され、初期値が0.0になります。

デルタT演算子(サンプリングタイム、dT)を式に挿入します。

これはデータのサンプリングタイムを表し、実行時に実際の値に置き換わります。

開く

dT ./%filterConstant%

この例では、dTData ステップの time [s] 列からの値で、%filterConstant% は計算で使用されるパラメータです。

y = timeDelay(%y%, 0.0) * dT

この場合は、時間遅延を適用した後にyの値がサンプリングタイムdTで乗算されます。

ノードを特定の離散値に丸める演算子 roundToDiscreteValues( を式に挿入します。式の末尾には ) が必要です。

演算子を挿入した後、離散パラメータを選択して値を入力します。構文は以下のとおりです:

roundToDiscreteValues(node, [value1, value2, ...])

開く

roundToDiscreteValues(%calMap_SCV%(%speed%, %load%), [0, 1])

この例では、適合マップcalMap_SCVが入力speedおよびloadに基づいて離散値0または1に丸められます。

roundToDiscreteValues(%myTernary%, [0, 1, 2])

ここでは、myTernaryの値が離散値0、1、2に丸められます。

ウィンドウの長さと高さに基づいて信号の定常状態を計算する演算子 steadyState_abs( を式に挿入します。式の末尾には ) が必要です。構文は以下のとおりです:

steadyState_abs(x, windowLength, windowHeight, sampleRate)

開く

steadyState_abs(%signal%, 10, 200, dT)

この例では、signalの定常状態が、ウィンドウの長さ10、高さ200、およびサンプリングレートdTを用いて計算されます。

式のフィールド内の最後のエントリを削除します(backspace)。

以下の演算子がサポートされています。バーガーメニュー()から選択するか、または手入力します:

log(x)

自然対数(底がe)。

開くlog(exp(2)) => 2

log10(x)

常用対数(底が10)。

開くlog10(10^2) => 2

exp(x)

オイラー数のべき乗ex

開くexp(1)) => 2.718

sin(x), cos(x), tan(x), tanh(x), atan(x)

三角関数 - 入力はラジアン単位です。

開くsin(3.1416) ~> 0

atan2(x, y)

四象限逆正接関数 - 入力はラジアン単位です。

開くatan2(%id%, %iq%)

delayseq(data, n)

信号をnタイムステップ分遅らせます。信号の先頭部分にはゼロが充填されます。

開くdelayseq([1; 2; 3; 4;], 2) => [0; 0; 1; 2]

bitget(x, bitPos)

MATLAB®関数 bitget は指定位置(bitPos)のビット値を返します。

開く

bitget(4, 3)1を返します。

bitget(4, 2)0を返します。

この例では、整数4は2進数で100と表されます。関数bitget(4, 3)は位置3のビット、1を取得し、bitget(4, 2)は位置2のビット、0を取得します。

以下のような表記もサポートされています:

z = [x, y]

多次元ベクトルを作成します。1つのベクトルは、y = z(:, 2)で抽出できます。これは、たとえばサブ関数が複数のノードやベクトルを返す必要がある場合に役立ちます。

y = zeros(size(x))

ゼロのベクトルを作成します。

y = ones(size(x))

1のベクトルを作成します。

?

状況依存のオンラインヘルプが開きます。

Validate

式の妥当性をチェックします。

OK

設定内容を確定してウィンドウを閉じます。

Cancel

設定内容を破棄してウィンドウを閉じます。

参照

ファンクションノードを追加する

ファンクションノードを編集する

ファンクションのモデリング

ファンクションノード用の演算子