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

ノードの作成と編集は、Insert/Edit Node ウィンドウで行います。このウィンドウの右側には、一般的な演算記号を挿入するためのボタンが表示されます。

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

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

平方根演算子 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のベクトルを作成します。

参照

Insert/Edit Node