if-else
この例では、Simulink® ブロック、Stateflow® チャート、および MATLAB® Function ブロックを使用して if-else 構造を実装する方法を示します。
C コンストラクター
if (u1 > u2) { y1 = u1; } else { y1 = u2; }
if-else のモデル化パターン: Switch ブロック
if-else
ステートメントを作成する方法の 1 つとして、[Simulink]、[Signal Routing] ライブラリの Switch ブロックを使用する方法があります。
1. モデル例 ex_if_else_SL
を開きます。
モデルには、ブロック パラメーター [1 番目の入力が通過する条件] が u2~=0
である Switch ブロックが含まれています。u2
が TRUE
の場合は u1
が選択され、それ以外の場合は u2
が通過します。
2. モデルをビルドしてコードを生成するには、Ctrl+B を押します。
if-else
構造を実装するコードが ex_if_else_SL.c
の関数 ex_if_else_SL_step
に含まれています。
/* External inputs (root inport signals with default storage) */ ExternalInputs U; /* External outputs (root outports fed by signals with default storage) */ ExternalOutputs Y; /* Model step function */ void ex_if_else_SL_step(void) { /* Switch: '<Root>/Switch' incorporates: * Inport: '<Root>/u1' * Inport: '<Root>/u2' * RelationalOperator: '<Root>/Relational Operator' */ if (U.u1 > U.u2) { /* Outport: '<Root>/y1' */ Y.y1 = U.u1; } else { /* Outport: '<Root>/y1' */ Y.y1 = U.u2; } /* End of Switch: '<Root>/Switch' */ }
if-else のモデル化パターン: Stateflow チャート
1. モデル例 ex_if_else_SF
を開きます。
モデルには If-Else
の判定パターンが含まれています。これは、チャート内で右クリックし、[パターンをチャートに追加]、[判定]、[If-Else] を選択して追加します。
2. モデルをビルドしてコードを生成するには、Ctrl+B を押します。
if-else
構造を実装するコードが ex_if_else_SF.c
の関数 ex_if_else_SF_step
に含まれています。
/* External inputs (root inport signals with default storage) */ ExternalInputs U; /* External outputs (root outports fed by signals with default storage) */ ExternalOutputs Y; /* Model step function */ void ex_if_else_SF_step(void) { /* Chart: '<Root>/Chart' incorporates: * Inport: '<Root>/u1' * Inport: '<Root>/u2' */ /* If-Else */ if (U.u1 >= U.u2) { /* Outport: '<Root>/y1' */ Y.y1 = U.u1; } else { /* Outport: '<Root>/y1' */ Y.y1 = U.u2; } /* End of Chart: '<Root>/Chart' */ }
if-else のモデル化パターン: MATLAB Function ブロック
1. モデル例 ex_if_else_ML
を開きます。
2. MATLAB Function ブロックには次の関数が含まれています。
function y1 = fcn(u1, u2) if u1 > u2; y1 = u1; else y1 = u2; end
2. モデルをビルドしてコードを生成するには、Ctrl+B を押します。
if-else
構造を実装するコードが ex_if_else_ML.c
の関数 ex_if_else_ML_step
に含まれています。
/* External inputs (root inport signals with default storage) */ ExternalInputs U; /* External outputs (root outports fed by signals with default storage) */ ExternalOutputs Y; /* Model step function */ void ex_if_else_ML_step(void) { /* MATLAB Function: '<Root>/MATLAB Function' incorporates: * Inport: '<Root>/u1' * Inport: '<Root>/u2' */ if (U.u1 >= U.u2) { /* Outport: '<Root>/y1' */ Y.y1 = U.u1; } else { /* Outport: '<Root>/y1' */ Y.y1 = U.u2; } /* End of MATLAB Function: '<Root>/MATLAB Function' */ }