このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
If
if-else
ステートメントに類似したロジックを使用してサブシステムの実行を選択する
ライブラリ:
Simulink /
Ports & Subsystems
説明
If ブロックは、Action Port ブロックを含む If Action Subsystem ブロックと同様に、if-else ロジックを実装してサブシステムの実行を制御します。If ブロックを使用する例については、選択サブシステムの実行を参照してください。
例
Simulink Subsystem のセマンティクス
この一連の例では、さまざまなタイプの Simulink® Subsystem と、これらのサブシステムのシミュレーション実行時にどのようなセマンティクスが使用されるかという例を示します。各例では、モデルと、そのモデルの実行方法に関する違いを説明しています。
If-Then-Else ブロック
この例では、正弦波をIf Action Subsystemブロックに入力した場合の影響を示します。これは、If Action Subsystem ブロックとEnabled Subsystemブロックの類似度を示すよう設計されています。
If ブロックを使ったクラッチ ロックアップのモデル化
この例では、If/Else サブシステムを使用してクラッチ モデルを作成する方法を示します。If サブシステムがクラッチ ダイナミクスをロック位置でモデル化するのに対して、Else サブシステムはロック解除位置でモデル化します。If ブロックを使用していずれかを有効にします。If ブロックからの一点鎖線は、制御信号を示しています。この信号は、If/Else (または他の条件付き) サブシステムを有効にするために使用されます。GUI 上のボックスのいずれかをチェックすると、(時間に対して) 選択された変数のいずれかのプロットが生成されます。
制限
If ブロックには次の制限があります。
調整可能なパラメーターをサポートしません。
if
式またはelseif
式の値は、通常モードまたはアクセラレータ モードでのシミュレーション中、または生成コードの実行時に調整することはできません。調整可能な if-else 式を実装するには、その式を If ブロックの外で調整するようにしてください。たとえば、Relational Operator ブロックを使用して If ブロックの外部で式を評価します。または、If ブロックへの入力として、調整可能なパラメーターを追加します。
カスタム ストレージ クラスをサポートしません。Struct ストレージ クラスを使用してパラメーター データを構造体に整理する (Embedded Coder)を参照してください。
[If 式] および [Elseif 式] では、
+
、-
、*
、/
などの特定の演算子は受け入れられません。
端子
入力
Logical operands — 論理式の評価に用いる値
スカラー | ベクトル
入力 u1,u2,...,un
は同じデータ型でなければなりません。入力は、列挙型のような、ユーザー定義のタイプにはできません。
If ブロックは、固定小数点データ型を直接的にはサポートしません。ただし、この制限を解決するために、Compare To Constant ブロックを使用することができます。選択サブシステムの実行の固定小数点データ型のサポートを参照してください。
If ブロックは、Boolean データ型をサポートしていません。If ブロックに Boolean 信号を入力する場合は、Data Type Conversion ブロックを使用してその信号を整数型に変換します。
データ型: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
出力
Action — If Action Subsystem ブロックのアクション信号
スカラー
if
、else
および elseif
端子からの出力は If Action Subsystem ブロックに対するアクション信号です。
パラメーター
入力数 — 入力端子の数を指定
1
(既定値) | 整数
1
1 つの入力端子を指定します。
- 整数
入力端子の数を指定します。ブロック端子には文字
'u'
の後に番号1,2,...,n
が続くラベルが付けられます。n
は、指定した入力数です。
プログラムでの使用
ブロック パラメーター: NumInputs |
型: 文字ベクトル |
値: '1' | '<integer>' |
既定の設定: '1' |
If 式 — 論理式を指定
u1 > 0
(既定値) | 論理式
if
端子に接続された If Action Subsystem は、関連付けられた式が true に評価されたときに実行されます。
u1 > 0
入力
u1
が0
より大きい場合に出力端子のアクション信号を送信することを指定します。- 論理式
論理式を指定します。この式は if 出力端子に隣接する If ブロックに表示されます。
式に含めることができる演算子は
<, <=, ==, ~=, >, >=, &, |, ~, (), unary-minus
だけです。+, -, *, /
や^
などの演算子は許可されません。この式は、たとえば、int8(6)
などのデータ型の式を含むことはできません。また、データ型がdouble
またはsingle
以外のワークスペース変数を参照することはできません。
プログラムでの使用
ブロック パラメーター: IfExpression |
型: 文字ベクトル |
値: 'u1 > 0' | '<logical expression>' |
既定の設定: 'u1 > 0' |
elseif 式 — 論理式を指定
空 (既定値) | 論理式のリスト
elseif 端子に接続されている If Action Subsystem は、式が true
に評価され、すべての if
式と elseif
式が false の場合に実行されます。
- 空
論理式は指定されません。
- 論理式のリスト
コンマで区切られた論理式のリストを指定します。[else 条件の表示] チェック ボックスをオンにすると、If ブロックの if 端子の下および else 端子の上に式が表示されます。
式に含めることができる演算子は
<, <=, ==, ~=, >, >=, &, |, ~, (), unary-minus
だけです。+, -, *, /
や^
などの演算子は許可されません。この式は、たとえば、int8(6)
などのデータ型の式を含むことはできません。また、データ型がdouble
またはsingle
以外のワークスペース変数を参照することはできません。
プログラムでの使用
ブロック パラメーター: ElseIfExpressions |
型: 文字ベクトル |
値: '' | '<list of logical expressions>' |
既定の設定: '' |
else 条件の表示 — else 端子の表示を制御
オン (既定値) | オフ
if 端子とすべての elseif 端子の式が false
である場合、else 端子はアクション信号を送信し、接続された If Action Subsystem ブロックを実行します。
- オン
else 端子を表示します。
- オフ
else 端子を表示しません。
プログラムでの使用
ブロック パラメーター: ShowElse |
型: 文字ベクトル |
値: 'on' | 'off' |
既定の設定: 'on' |
ゼロクロッシング検出を有効にする — ゼロクロッシング検出を制御する
オン (既定値) | オフ
ゼロクロッシング検出を制御します。
- オン
ゼロクロッシングを検出します。
- オフ
ゼロクロッシングを検出しません。
プログラムでの使用
ブロック パラメーター: ZeroCross |
型: 文字ベクトル |
値: 'on' | 'off' |
既定の設定: 'on' |
ブロックの特性
データ型 |
|
直達 |
|
多次元信号 |
|
可変サイズの信号 |
|
ゼロクロッシング検出 |
|
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
HDL コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための VHDL、Verilog および SystemVerilog のコードを生成します。
HDL Coder™ には、HDL の実装および合成されたロジックに影響する追加のコンフィギュレーション オプションがあります。
このブロックには 1 つの既定の HDL アーキテクチャがあります。
ConstrainedOutputPipeline | 既存の遅延を設計内で移動することによって出力に配置するレジスタの数。分散型パイプラインではこれらのレジスタは再分散されません。既定の設定は |
InputPipeline | 生成されたコードに挿入する入力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
OutputPipeline | 生成されたコードに挿入する出力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)