Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Sqrt

平方根、符号付き平方根、または逆平方根を計算

  • Sqrt block

ライブラリ:
Simulink / Math Operations
HDL Coder / HDL Floating Point Operations
HDL Coder / Math Operations

説明

Sqrt ブロックは入力信号の平方根、符号付き平方根または逆平方根を計算します。[関数] パラメーター リストから以下のいずれかの関数を選択します。

関数説明数式 MATLAB® 等価
sqrt

入力の平方根

u0.5

sqrt
signedSqrt

入力の絶対値の平方根に入力の符合を乗算した値

sign(u)*|u|0.5

rSqrt

入力の平方根の逆

u-0.5

ブロック アイコンが関数に一致するように変わります。

端子

入力

すべて展開する

平方根、符号付き平方根または逆平方根を計算するためのブロックへの入力信号。関数 sqrt は、複素数の固定小数点信号を除く実数入力または複素数入力を受け入れます。signedSqrtrSqrt は複素数入力を受け入れません。入力信号は浮動小数点数でなければなりません。

次の表は、関数 sqrtrSqrt、および signedSqrt の浮動小数点、整数、および固定小数点データ型の複素数型と負の値のサポートをまとめています。

関数データ型複素数負の値
入力出力
sqrt浮動小数点ありありあり
 整数と固定小数点なしなしなし

rSqrt

浮動小数点なしなしあり
 整数と固定小数点なしなしなし
signedSqrt浮動小数点なしありあり
 整数と固定小数点なしなしなし

入力が負である場合は、signedSqrt を除くすべての関数で [出力信号] を複素数に設定します。

データ型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

出力

すべて展開する

入力信号の平方根、符号付き平方根または逆平方根である出力信号。入力が整数または固定小数点型である場合、出力は浮動小数点でなければなりません。

データ型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

パラメーター

すべて展開する

メイン

ブロックが計算する数学関数を指定します。ブロック アイコンが選択した関数に一致するように変わります。

関数ブロック アイコン
sqrt
signedSqrt
rSqrt

依存関係

このパラメーターが [signedSqrt] に設定されている場合、[中間結果のデータ型] パラメーターはディセーブルになります。

プログラムでの使用

ブロック パラメーター: Operator
: 文字ベクトル
値: 'sqrt' | 'signedSqrt' | 'rSqrt'
既定の設定: 'sqrt'

ブロックの出力信号タイプを指定します。

関数入力信号タイプ出力信号タイプ
自動実数複素数

sqrt

real

非負の入力に対しては real

負の入力に対しては NaN

非負の入力に対しては real

負の入力に対しては NaN

complex

complex

complex

error

complex

signedSqrt

real

real

real

complex

complex

error

error

error

rSqrt

real

real

real

error

complex

error

error

error

プログラムでの使用

ブロック パラメーター: OutputSignalType
: 文字ベクトル
値: 'auto' | 'real' | 'complex'
既定の設定: 'auto'

サンプルの時間間隔を指定します。サンプル時間を継承するには、このパラメーターを -1 に設定します。詳細については、サンプル時間の指定を参照してください。

依存関係

このパラメーターは、-1 以外の値に設定した場合にのみ表示されます。詳細は、サンプル時間が推奨されないブロックを参照してください。

プログラムでの使用

ブロック パラメーター: SampleTime
型: string スカラーまたは文字ベクトル
既定の設定: "-1"

アルゴリズム

平方根の逆数を計算するメソッドを指定します。このパラメーターは関数 rSqrt に対してのみ有効です。

メソッドサポートされるデータ型このメソッドを使用できる場合
Exact

浮動小数点

近似は必要ありません。

メモ

入力または出力が浮動小数点である必要があります。

Newton-Raphson

浮動小数点、固定小数点、および組み込み整数型

高速の近似計算が必要な場合。

[Exact] メソッドでは、MATLAB の計算と一致する結果が得られます。

メモ

sqrtsignedSqrt のアルゴリズムは、ブロック ダイアログ ボックスの選択にかかわらず、常に [Exact] タイプです。

プログラムでの使用

ブロック パラメーター: AlgorithmType
: 文字ベクトル
: 'Exact' | 'Newton-Raphson'
既定の設定: 'Exact'

ニュートン・ラフソン アルゴリズムを実行するには、反復回数を指定します。このパラメーターは関数 rSqrt と、[手法][ニュートン・ラフソン] で有効です。

メモ

0 を入力すると、ブロック出力はニュートン・ラフソン アルゴリズムの初期推定になります。

プログラムでの使用

ブロック パラメーター: Iterations
: 文字ベクトル
: 整数
既定の設定: '3'

データ型

データ属性の設定には [データ型アシスタント] が役立ちます。[データ型アシスタント] を使用するには、the Show data type assistant button をクリックします。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。

[メイン] ペインで [関数]sqrt または rSqrt に設定するときに、中間結果のデータ型を指定します。

型は継承されるか、直接指定されるか、Simulink.NumericType などのデータ型オブジェクトとして表現されます。

メモ

オーバーフローを回避するには、中間データ型が出力データ型の二乗を含む可能性のあるデータ型以上でなければなりません。

平方根関数 sqrt に中間データ型を明示的に設定する際のガイドラインに従ってください。

入力データ型と出力データ型中間データ型
入力または出力が double の場合。double を使用します。
入力または出力が single で単一ではないいずれかのデータ型が double 以外の場合。 single または double を使用します。
入力と出力が固定小数点の場合。固定小数点を使用します。

逆数平方根関数に中間データ型を明示的に設定する際のガイドラインに従ってください。rSqrt:

入力データ型と出力データ型中間データ型
入力が double で出力が single の場合。double を使用します。
入力が single で出力が double の場合。double を使用します。
入力と出力が固定小数点の場合。固定小数点を使用します。

注意

以下の場合は、[中間結果データ型][継承: 出力から継承] に設定しないでください。

  • 平方根の逆数の計算に [Newton-Raphson] を選択した場合。

  • 入力データ型が浮動小数点の場合。

  • 出力データ型が固定小数点の場合。

これらの状況下では、[継承: 出力から継承] を選択すると、準最適なパフォーマンスとなり、エラーが発生します。

このエラーを回避するには、入力信号を浮動小数点データ型から固定小数点データ型に変換します。たとえば、Sqrt ブロックの前に Data Type Conversion ブロックを挿入して変換を実行します。

依存関係

このパラメーターは、[関数] パラメーターが [signedSqrt] に設定されている場合無効になります。

プログラムでの使用

ブロック パラメーター: IntermediateResultsDataTypeStr
: 文字ベクトル
: 'Inherit: Inherit via internal rule' | 'Inherit: Inherit from input' | 'Inherit: Inherit from output' | 'double' | 'single''int8''uint8'int16'uint16''int32''uint32''int64''uint64'fixdt(1,16,0)fixdt(1,16,2^0,0)'<data type expression>'
既定の設定: 'Inherit: Inherit via internal rule'

出力データ型を指定します。型は継承されるか、直接指定されるか、Simulink.NumericType などのデータ型オブジェクトとして表現されます。

依存関係

入力が単精度より小さい浮動小数点データ型の場合、[継承: 内部ルールによる継承] 出力データ型は単精度より小さい浮動小数点の出力型を継承するコンフィギュレーション パラメーターの設定によって変わります。データ型の符合化に必要なビット数が単精度データ型の符合化に必要な 32 ビットより少ない場合、データ型は単精度より小さくなります。たとえば、halfint16 は単精度より小さくなります。

プログラムでの使用

ブロック パラメーター: OutDataTypeStr
: 文字ベクトル
: 'Inherit: Inherit via internal rule' | 'Inherit: Inherit via back propagation' | 'Inherit: Same as first input' | 'double' | 'single' | 'half' | 'int8' | 'uint8' | int16 | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | fixdt(1,16,0) | fixdt(1,16,2^0,0) | fixdt(1,16,2^0,0) | '<data type expression>'
既定の設定: 'Inherit: Same as first input'

Simulink® が有限で実数の double のスカラー値としてチェックする出力範囲の下限値を指定します。

メモ

このブロックのデータ型としてバス オブジェクトを指定した場合、ブロックのバス データの最小値を設定しないでください。Simulink はこの設定を無視します。代わりに、データ型として指定したバス オブジェクトのバス要素の最小値を設定してください。バス要素の [最小値] パラメーターの詳細については、Simulink.BusElement を参照してください。

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

メモ

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

プログラムでの使用

ブロック パラメーター: OutMin
: 文字ベクトル
: スカラー
既定の設定: '[ ]'

Simulink が有限で実数の double のスカラー値としてチェックする出力範囲の上限値を指定します。

メモ

このブロックのデータ型としてバス オブジェクトを指定した場合、ブロックのバス データの最大値を設定しないでください。Simulink はこの設定を無視します。代わりに、データ型として指定したバス オブジェクトのバス要素の最大値を設定します。バス要素の [最大値] パラメーターの詳細については、Simulink.BusElement を参照してください。

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

メモ

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

プログラムでの使用

ブロック パラメーター: OutMax
: 文字ベクトル
: スカラー
既定の設定: '[ ]'

固定小数点演算の丸めモードを指定します。詳細については、丸め (Fixed-Point Designer)を参照してください。

プログラムでの使用

ブロック パラメーター: RndMeth
型: 文字ベクトル
値: 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
既定の設定: 'Floor'

固定小数点ツールや固定小数点アドバイザーによる変更を避けるために、このブロックの出力データ型の設定をロックします。詳細については、[出力データ型の設定をロックする] の使用 (Fixed-Point Designer)を参照してください。

プログラムでの使用

ブロック パラメーター: LockScale
: 文字ベクトル
: 'off' | 'on'
既定の設定: 'off'

動作このアクションを行う理由オーバーフロー発生時に起きること

このチェック ボックスをオンにする。

モデルでオーバーフローが発生する可能性があるので、生成コードに飽和保護を明示的に組み込むことをお勧めします。

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

int8 (符号付き、8 ビット整数) データ型が表すことができる最大値は 127 です。この最大値を超えるブロックの演算結果により 8 ビット整数のオーバーフローが発生します。チェック ボックスがオンになっていると、ブロック出力は 127 で飽和します。同様に、ブロック出力は最小出力値である -128 で飽和します。

このチェック ボックスをオンにしない。

生成コードの効率を最適化することをお勧めします。

ブロックが範囲外の信号を処理する方法を指定しすぎないようにすることをお勧めします。詳細については、信号範囲のエラーのトラブルシューティングを参照してください。

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

int8 (符号付き、8 ビット整数) データ型が表すことができる最大値は 127 です。この最大値を超えるブロックの演算結果により 8 ビット整数のオーバーフローが発生します。チェック ボックスをオフにすると、オーバーフローを引き起こした値は int8 として解釈され、意図しない結果が引き起こされる可能性があります。たとえば、int8 として表されるブロック結果 130 (バイナリで 1000 0010) は -126 です。

このチェック ボックスをオンにすると、飽和は出力や結果だけでなく、このブロックの内部演算すべてに適用されます。通常、オーバーフローが可能ではない場合は、コード生成プロセスで検出されます。この場合、コード ジェネレーターでは飽和コードは生成されません。

プログラムでの使用

ブロック パラメーター: DoSatur
: 文字ベクトル
: 'off' | 'on'
既定の設定: 'off'

ブロックの特性

データ型

double | fixed point | half | integer | single

直達

はい

多次元信号

はい

可変サイズの信号

はい

ゼロクロッシング検出

いいえ

拡張機能

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。

固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。

バージョン履歴

R2010a で導入