ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Sum, Add, Subtract, Sum of Elements

入力の加算または減算

ライブラリ

Math Operations

説明

Sum ブロックは、入力に対して加算または減算を行います。このブロックは、スカラー入力、ベクトル入力、または行列入力を加算または減算できます。また、単一の要素を折りたたむこともできます。

ブロックの動作は、[符号リスト] パラメーターを使用して指定します。プラス (+)、マイナス (-) およびスペーサー (|) 記号は、入力に対して実行される演算を示します。

  • 2 つ以上の入力がある場合、+- の記号の数は入力の数と等しくなければなりません。たとえば、+-+ は 3 つの入力を必要とし、最初 (上) の入力から 2 番目 (中央) の入力を減算し、次に 3 番目 (下) の入力を追加するようブロックを構成します。

  • すべての非スカラー入力は同じ次元をもつ必要があります。スカラー入力は、他の入力と同じ次元をもつように展開されます。

  • スペース記号は、ブロックのアイコン上の端子間に追加のスペースを作成します。

  • 円形の Sum ブロックの場合、最初の入力端子はブロックを反時計回りに回って 12 時の位置に最も近い端子です。同様に、他の入力端子も、ブロックを反時計回りに順番に表示されます。

  • すべての入力の加算のみが必要な場合は、入力数に等しい数値パラメーター値を + 記号の代わりに指定できます。

  • 入力端子が 1 つのみ必要な場合、+ または - を指定された処理で使用することによって要素を折りたたむことができます。

Sum ブロックはまず入力のデータ型を加算器のデータ型に変換し、指定された演算を行います。次に、指定された丸めモードとオーバーフロー モードで、計算結果を出力データ型に変換します。

ブロック出力の計算

Sum ブロックの出力計算は、ブロック入力の数と入力端子の符号に依存します。

Sum ブロックの入力端子それに伴う処理出力計算の式ここで

1 つの入力端子

入力端子の符号が +

y = e[0] + e[1] + e[2] ...+ e[m]


e[i] は入力 u の i 番目の要素

入力端子の符号が –

y = 0.0 – e[0] – e[1] – e[2] ...– e[m]


2 つ以上の入力端子

すべての入力端子の符号が –

y = 0.0 – u[0] – u[1] – u[2] ...– u[n]


u[i] は i 番目の入力端子の入力

k 番目の入力端子が符号 + の最初の端子

y = u[k] – u[0] – u[1] – u[2] – u[k–1] (+/–) u[k+1] ...(+/–) u[n]


サポートするデータ型

Sum ブロックは、以下のデータ型の実数または複素数信号を受け入れます。

  • 浮動小数点

  • 組み込み整数

  • 固定小数点

  • boolean

[すべての入力が同じデータ型をもつ] パラメーターを選択しない限り、入力のデータ型は異なる可能性があります。詳細は、Simulink® ドキュメンテーションの「Simulink でサポートされているデータ型」を参照してください。

パラメーターとダイアログ ボックス

[Sum ブロック] ダイアログ ボックスの [メイン] ペインは、次のように表示されます。

[Sum ブロック] ダイアログ ボックスの [信号属性] ペインは、次のように表示されます。

データ型アシスタントを表示

[データ型アシスタント] を表示します。

設定

[データ型アシスタント] を使用すると、[出力データ型] パラメーターを設定できます。

詳細は、「信号のデータ型の制御」を参照してください。

アイコン形状

ブロックのアイコンの形状を指定します。

設定

既定の設定: 円形

四角形

ブロックのアイコンの形状を四角形に指定します。

円形

ブロックのアイコンの形状を円形に指定します。

コマンド ライン情報

ブロック固有のパラメーターを参照してください。

符号リスト

プラス (+) およびマイナス (-) 文字を入力します。

設定

既定の設定: |++

  • 加算は既定の演算であるため、入力の加算のみの場合は、入力端子の数を入力します。

  • 単一のベクトル入力の場合、+ または - 記号は指定された演算でベクトルを折りたたみます。

  • 入力に必要なプラス (+) 記号とマイナス (-) 記号を入力します。

ヒント

[符号リスト] パラメーターの符号の間にスペーサー (|) を挿入することで、ブロックの入力端子の位置を指定できます。たとえば、++|-- は 2 番目の入力端子と 3 番目の入力端子の間に追加のスペースを生成します。

依存関係

1 要素のみを入力すると、[加算範囲] パラメーターが有効になります。

コマンド ライン情報

ブロック固有のパラメーターを参照してください。

加算範囲

加算範囲を決めるには、次元の範囲を選択します。

設定

既定の設定: すべての次元

すべての次元

すべての入力要素を加算し、スカラー値を算出します。

指定した次元

[次元] パラメーターを表示し、処理を行う次元の範囲を指定します。

依存関係

指定した次元 を選択すると、[次元] パラメーターが有効になります。

[符号リスト] (要素が 1 つのみの場合) によりこのパラメーターが有効になります。

コマンド ライン情報

ブロック固有のパラメーターを参照してください。

次元

演算を実行する次元を指定します。

設定

既定の設定: 1

このブロックは、MATLAB® の関数 sum と同じ加算規則に従います。

2 行 3 列の行列 U があるとします。

  • [次元]1 に設定すると、出力 Y は以下のように計算されます。

    Y=i=12U(i,j)

  • [次元]2 に設定すると、出力 Y は以下のように計算されます。

    Y=j=13U(i,j)

指定した次元が入力の次元より大きい場合、エラー メッセージが表示されます。

依存関係

このパラメーターは、[加算範囲]指定した次元 に設定すると有効になります。

コマンド ライン情報

ブロック固有のパラメーターを参照してください。

サンプル時間

すべての入力が同じデータ型をもつ

すべての入力が同じデータ型をもつようにします。

設定

既定の設定: オフ

オン

すべての入力が同じデータ型をもつようにします。

オフ

すべての入力が同じデータ型をもつ必要はありません。

コマンド ライン情報

ブロック固有のパラメーターを参照してください。

固定小数点ツールによる変更に対してデータ型の設定をロックする

固定小数点ツールや固定小数点アドバイザーによる変更を避けるために、このブロックのデータ型の設定をロックします。

設定

既定の設定: オフ

オン

このブロックのすべてのデータ型の設定をロックします。

オフ

固定小数点ツールや固定小数点アドバイザーがこのブロックのデータ型の設定を変更できます。

コマンド ライン情報

ブロック固有のパラメーターを参照してください。

整数丸めモード

固定小数点演算の丸めモードを指定します。

設定

既定の設定: 負方向

正方向

正の無限大方向に正負の値を丸めます。MATLAB 関数 ceil と等価です。

最も近い偶数方向

最も近い表現可能な値に数値を丸めます。同順位が発生した場合は、最も近い偶数の整数に丸めます。Fixed-Point Designer™ 関数 convergent と等価です。

負方向

負の無限大方向に正負の値を丸めます。MATLAB 関数 floor と等価です。

最も近い正の整数方向

最も近い表現可能な値に数値を丸めます。同順位が発生した場合は、正の無限大方向に丸めます。Fixed-Point Designer 関数 nearest と等価です。

最も近い整数方向

最も近い表現可能な値に数値を丸めます。同順位が発生した場合は、正の数値を正の無限大方向、負の数値を負の無限大方向に丸めます。Fixed-Point Designer 関数 round と等価です。

最も簡潔

下限値への丸めとゼロへの丸めのいずれかを自動的に選択し、できるだけ効率の高い丸めコードを生成します。

ゼロ方向

ゼロ方向に数値を丸めます。MATLAB 関数 fix と等価です。

コマンド ライン情報

パラメーター: RndMeth
タイプ: 文字列
値: 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
既定の設定: 'Floor'

参考

詳細は、Fixed-Point Designer ドキュメンテーション「丸め」を参照してください。

整数オーバーフローで飽和

オーバーフローで飽和するかどうかを指定します。

設定

既定の設定: オフ

オン

オーバーフローは、データ型が表現できる最小値または最大値のいずれかに飽和します。

たとえば、符号付き 8 ビット整数に関連付けられたオーバーフローは、-128 または 127 に飽和することができます。

オフ

オーバーフローは、データ型によって表現される適切な値にラップされます。

たとえば、数 130 は符号付き 8 ビット整数 1 つに収まりきらないので、-126 にラップされます。

ヒント

  • モデルでオーバーフローが発生する可能性があり、生成コードに飽和保護を明示的に組み込む必要があるときには、このチェック ボックスをオンにすることを検討してください。

  • 生成コードの効率を最適化する場合には、このチェック ボックスをオフにすることを検討してください。

    このチェック ボックスをオフにすると、ブロックが範囲外の信号を処理する方法を指定しすぎないようにする点でも役立ちます。詳細は、「信号範囲のエラーのチェック」を参照してください。

  • このチェック ボックスをオンにすると、飽和は出力や結果だけでなく、このブロックの内部演算すべてに適用されます。

  • 通常、オーバーフローが可能ではない場合は、コード生成プロセスで検出されます。この場合、コード ジェネレーターでは飽和コードは生成されません。

コマンド ライン情報

パラメーター: SaturateOnIntegerOverflow
タイプ: 文字列
値: 'off' | 'on'
既定の設定: 'off'

アキュムレータのデータ型

アキュムレータ データ型を指定します。

設定

既定の設定: 継承: 内部ルールによる継承

継承: 内部ルールによる継承

アキュムレータ データ型を特定するために内部ルールを使用します。

継承: 1 番目の入力と同じ

1 番目の入力信号のデータ型を使用します。

double

アキュムレータ データ型は double です。

single

アキュムレータ データ型は single です。

int8

アキュムレータ データ型は int8 です。

uint8

アキュムレータ データ型は uint8 です。

int16

アキュムレータ データ型は int16 です。

uint16

アキュムレータ データ型は uint16 です。

int32

アキュムレータ データ型は int32 です。

uint32

アキュムレータ データ型は uint32 です。

fixdt(1,16,0)

アキュムレータ データ型は固定小数点 fixdt(1,16,0) です。

fixdt(1,16,2^0,0)

アキュムレータ データ型は固定小数点 fixdt(1,16,2^0,0) です。

<data type expression>

データ型オブジェクトの名前です。たとえば、Simulink.NumericType などです。

コマンド ライン情報

ブロック固有のパラメーターを参照してください。

参考

詳細は、「データ型アシスタントを利用したデータ型の指定」を参照してください。

モード

指定するアキュムレータ データのカテゴリを選択します。

設定

既定の設定: 継承

継承

データ型の継承規則を指定します。継承 を選択すると、値のリストが有効になります。

  • 内部ルールによる継承 (既定の設定)

  • 1 番目の入力と同じ

組み込み

組み込みデータ型を指定します。組み込み を選択すると、値のリストが有効になります。

  • double (既定の設定)

  • single

  • int8

  • uint8

  • int16

  • uint16

  • int32

  • uint32

固定小数点

固定小数点データ型を指定します。

データ型を評価する式を指定します。[式] を選択すると、式を入力できます。

依存関係

アキュムレータ データ型の [データ型アシスタントを表示] ボタンをクリックすると、このパラメーターが有効になります。

コマンド ライン情報

ブロック固有のパラメーターを参照してください。

参考

「データ型アシスタントを利用したデータ型の指定」を参照してください。

データ型オーバーライド

この信号のデータ型オーバーライド モードを指定します。

設定

既定の設定: 継承

継承

コンテキストからデータ型オーバーライド設定を継承します。コンテキストとはブロックのことで、信号を使用している Simulink の Simulink.Signal オブジェクトまたは Stateflow® チャートです。

オフ

コンテキストのデータ型オーバーライド設定を無視し、信号に対して指定された固定小数点データ型を使用します。

ヒント

個々のデータ型に対してデータ型オーバーライドをオフにする機能により、データ型オーバーライドを適用する際に、モデル内のデータ型をさらに効果的に制御できます。たとえば、このオプションを使用すると、データ型オーバーライド設定にかかわらず、データ型が下流ブロックの要件を満たすことを確認できます。

依存関係

このパラメーターは、[モード]組み込み または 固定小数点 の場合にのみ表示されます。

符号付き/なし

固定小数点データを符号付きにするか、符号なしにするかを指定します。

設定

既定の設定: 符号付き

符号付き

符号付き固定小数点データを指定します。

符号なし

符号なし固定小数点データを指定します。

依存関係

アキュムレータ データ型に [モード][固定小数点] を選択すると、このパラメーターが有効になります。

コマンド ライン情報

ブロック固有のパラメーターを参照してください。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

語長

量子化された整数をもつ語のビット サイズを指定します。

設定

既定の設定: 16

最小値: 0

最大値: 32

長い語長は短い語長に比べてよい精度で大きな値を表します。

依存関係

アキュムレータ データ型に [モード][固定小数点] を選択すると、このパラメーターが有効になります。

コマンド ライン情報

ブロック固有のパラメーターを参照してください。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

スケーリング

オーバーフローを避け、量子化誤差を最小限に抑えるための固定小数点データのスケーリング方法を指定します。

設定

既定の設定: [2 進小数点]

[2 進小数点]

2 進小数点の位置を指定します。

勾配とバイアス

勾配とバイアスを入力します。

依存関係

アキュムレータ データ型に [モード][固定小数点] を選択すると、このパラメーターが有効になります。

[2 進小数点] を選択すると、以下が有効になります。

  • 小数部の長さ

勾配とバイアス を選択すると、以下が有効になります。

  • 勾配

  • [バイアス]

コマンド ライン情報

ブロック固有のパラメーターを参照してください。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

小数部の長さ

固定小数点データ型の小数部の長さを指定します。

設定

既定の設定: 0

2 進小数点は正または負の整数になります。

依存関係

アキュムレータ データ型に [スケーリング][2 進小数点] を選択すると、このパラメーターが有効になります。

コマンド ライン情報

ブロック固有のパラメーターを参照してください。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

勾配

固定小数点データ型の勾配を指定します。

設定

既定の設定: 2^0

任意の正の実数を指定します。

依存関係

アキュムレータ データ型に [スケーリング][勾配とバイアス] を選択すると、このパラメーターが有効になります。

コマンド ライン情報

ブロック固有のパラメーターを参照してください。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

バイアス

固定小数点データ型のバイアスを指定します。

設定

既定の設定: 0

任意の実数を指定します。

依存関係

アキュムレータ データ型に [スケーリング][勾配とバイアス] を選択すると、このパラメーターが有効になります。

コマンド ライン情報

ブロック固有のパラメーターを参照してください。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

出力の最小値

Simulink がチェックする出力範囲の下限値。

設定

既定の設定: [] (指定なし)

有限で実数の double のスカラー値としてこの値を指定します。

Simulink は、最小値を使って以下を行います。

    メモ:   [出力の最小値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。代わりに、Saturation ブロックを使用してください。

コマンド ライン情報

パラメーター: OutMin
タイプ: 文字列
値: '[ ]'
既定の設定: '[ ]'

出力の最大値

Simulink がチェックする出力範囲の上限値。

設定

既定の設定: [] (指定なし)

有限で実数の double のスカラー値としてこの値を指定します。

Simulink は、最大値を使って以下を行います。

    メモ:   [出力の最大値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。代わりに、Saturation ブロックを使用してください。

コマンド ライン情報

パラメーター: OutMax
タイプ: 文字列
値: '[ ]'
既定の設定: '[ ]'

出力データ型

出力データ型を指定します。

設定

既定の設定: 継承: 内部ルールによる継承

継承: 内部ルールによる継承

Simulink は、組み込みターゲット ハードウェアのプロパティを考慮しつつ、数値の精度、パフォーマンス、生成コードのサイズのバランスが取れるように、データ型を選択します。組み込みターゲット ハードウェアの設定を変更すると、内部ルールにより選択されるデータ型が変更される可能性があります。コードの効率と数値の精度が、ソフトウェアにより同時に最適化されるとは限りません。内部ルールが、数値精度またはパフォーマンスに対する要求を満たさない場合は、以下のいずれかを行ってください。

  • 出力データ型を明示的に指定する。

  • 単に 継承: 1 番目の入力と同じ を選択します。

  • fixdt(1,32,16) のように既定のデータ型を明示的に指定し、固定小数点ツールを使用してモデルにデータ型を推奨する。詳細は、fxptdlg を参照してください。

  • 独自の継承ルールを指定するには、継承: 逆伝播による継承 を使用し、Data Type Propagation ブロックを使用します。このブロックの使い方は、Signal Attributes ライブラリ の Data Type Propagation Examples ブロックを参照してください。

    メモ:   アキュムレータの内部ルールは、生成コードの効率が低下するとしても、数値精度がより高いほうを選びます。同じ精度の出力を得るためには、出力データ型を 継承: アキュムレータと同じ を選択します。

継承: 逆伝播による継承

駆動ブロックのデータ型を使用します。

継承: 1 番目の入力と同じ

1 番目の入力信号のデータ型を使用します。

継承: アキュムレータと同じ

出力データ型はアキュムレータ データ型と同じです。

double

出力データ型は double です。

single

出力データ型は single です。

int8

出力データ型は int8 です。

uint8

出力データ型は uint8 です。

int16

出力データ型は int16 です。

uint16

出力データ型は uint16 です。

int32

出力データ型は int32 です。

uint32

出力データ型は uint32 です。

fixdt(1,16,0)

出力データ型は固定小数点 fixdt(1,16,0) です。

fixdt(1,16,2^0,0)

出力データ型は固定小数点 fixdt(1,16,2^0,0) です。

<data type expression>

データ型オブジェクトを使用します。たとえば、Simulink.NumericType などです。

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

参考

詳細は、「信号のデータ型の制御」を参照してください。

モード

指定するデータのカテゴリを選択します。

設定

既定の設定: 継承

継承

データ型の規則の継承。継承 を選択すると、右側にある 2 番目のメニュー/テキスト ボックスが有効になります。次の選択肢からいずれかを選択します。

  • 内部ルールによる継承 (既定の設定)

  • 逆伝播による継承

  • 1 番目の入力と同じ

  • アキュムレータと同じ

組み込み

組み込みのデータ型。組み込み を選択すると、右側にある 2 番目のメニュー/テキスト ボックスが有効になります。次の選択肢からいずれかを選択します。

  • double (既定の設定)

  • single

  • int8

  • uint8

  • int16

  • uint16

  • int32

  • uint32

固定小数点

固定小数点データ型。

データ型を評価する式。[式] を選択すると、右側から 2 番目のメニュー/テキスト ボックスが有効になります。そこに式を入力することができます。

依存関係

[データ型アシスタントを表示] ボタンをクリックすると、このパラメーターが有効になります。

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

参考

「データ型アシスタントを利用したデータ型の指定」を参照してください。

符号付き/なし

固定小数点データを符号付きにするか、符号なしにするかを指定します。

設定

既定の設定: 符号付き

符号付き

符号付き固定小数点データを指定します。

符号なし

符号なし固定小数点データを指定します。

依存関係

[モード]固定小数点を選択すると、このパラメーターが有効になります。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

語長

量子化された整数をもつ語のビット サイズを指定します。

設定

既定の設定: 16

最小値: 0

最大値: 32

依存関係

[モード]固定小数点を選択すると、このパラメーターが有効になります。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

スケーリング

オーバーフローを避け、量子化誤差を最小限に抑えるための固定小数点データのスケーリング方法を指定します。

設定

既定の設定: [2 進小数点]

[2 進小数点]

2 進小数点の位置を指定します。

勾配とバイアス

勾配とバイアスを入力します。

依存関係

[モード]固定小数点を選択すると、このパラメーターが有効になります。

[2 進小数点] を選択すると、以下が有効になります。

  • 小数部の長さ

  • 最高精度のスケーリングを計算

勾配とバイアス を選択すると、以下が有効になります。

  • 勾配

  • バイアス

  • 最高精度のスケーリングを計算

コマンド ライン情報

「ブロック固有のパラメーター」を参照してください。

参考

「固定小数点データ型の指定」を参照してください。

小数部の長さ

固定小数点データ型の小数部の長さを指定します。

設定

既定の設定: 0

2 進小数点は正または負の整数になります。

依存関係

[スケーリング][2 進小数点] を選択すると、このパラメーターが有効になります。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

勾配

固定小数点データ型の勾配を指定します。

設定

既定の設定: 2^0

任意の正の実数を指定します。

依存関係

[スケーリング]勾配とバイアス を選択すると、このパラメーターが有効になります。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

バイアス

固定小数点データ型のバイアスを指定します。

設定

既定の設定: 0

任意の実数を指定します。

依存関係

[スケーリング]勾配とバイアス を選択すると、このパラメーターが有効になります。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

Sum ブロックでの入力の並べ替え

最初の入力端子で - を使用すると、Sum ブロックでは、最初の入力が + 操作を使用するように入力が並べ替えられます。たとえば、式 output = -a-b+c では、output = c-a-b となるように、Sum ブロックにより入力が並べ替えられます。アキュムレータを初期化するには、Sum ブロックでは最初の + 入力端子を使用します。

ブロックでは最初のオペランド a で単項マイナス演算が実行されるのを避けます。単項マイナス演算が実行されると a の値が固定小数点データ型用に変更されてしまうためです。その場合、出力値は、abc の値の累計結果と異なります。

    ヒント:   output = -a-b+c の単項マイナス演算を明示的に指定するには、Math Operations ライブラリの Unary Minus ブロックを使用できます。

次のモデルがあるとします。

次のブロック パラメーターが適用されます。

  • Input1Input 2 の両方の Constant ブロックでは、[出力データ型]int8 を使用します。

  • Sum ブロックでは、[アキュムレータのデータ型][出力データ型] の両方に int8 を使用します。

  • Sum ブロックでは、[整数オーバーフローで飽和][on] に設定されています。

Sum ブロックでは、次の演算が行われて理想の結果 127 が得られるように、入力が並べ替えられます。

ステップブロックの演算
1

入力を (–Input1 + Input2) から (Input2 – Input1) に並べ替えます。

2

最初の + 入力端子を使用して、次のようにアキュムレータを初期化します。

Accumulator = int8(-1) = -1

3

次のように値のアキュムレータを続けます。

Accumulator = Accumulator – int8(-128) = 127

4

次のようにブロック出力を計算します。

Output = int8(127) = 127

Sum ブロックで入力が並べ替えられない場合は、代わりに次の演算が行われ、理想的ではない結果 126 が算出されます。

ステップブロックの演算
1

最初の入力端子を使用して、次のようにアキュムレータを初期化します。

Accumulator = int8(-(-128)) = 127

飽和が on に設定されているため、アキュムレータの初期値は 127 で飽和し、ラップしません。

2

次のように値のアキュムレータを続けます。

Accumulator = Accumulator + int8(-1) = 126

3

次のようにブロック出力を計算します。

Output = int8(126) = 126

特性

データ型

double | single | boolean | 整数 | 固定小数点

サンプル時間

駆動ブロックから継承

直接フィードスルー

あり

多次元信号

あり

可変サイズの信号

あり

ゼロクロッシング検出

なし

コード生成

あり

R2006a より前に導入

この情報は役に立ちましたか?