Main Content

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 ブロックが含まれています。u2TRUE の場合は 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' */
}

関連するトピック