Sqrt
平方根、符号付き平方根、または逆平方根を計算
ライブラリ:
Simulink /
Math Operations
HDL Coder /
HDL Floating Point Operations
HDL Coder /
Math Operations
説明
Sqrt ブロックは入力信号の平方根、符号付き平方根または逆平方根を計算します。[関数] パラメーター リストから以下のいずれかの関数を選択します。
関数 | 説明 | 数式 | MATLAB® 等価 |
---|---|---|---|
sqrt | 入力の平方根 |
| sqrt |
signedSqrt | 入力の絶対値の平方根に入力の符合を乗算した値 |
| — |
rSqrt | 入力の平方根の逆 |
| — |
ブロック アイコンが関数に一致するように変わります。
例
負の値の平方根
この例では、負の値の入力信号の平方根を複素数値の出力として計算する方法を示します。
[関数] を sqrt
に設定し、[出力信号タイプ] を complex
に設定すると、ブロックは、-100
の入力に対して、正しい結果 0 + 10i
を生成します。[出力信号タイプ] を auto
または real
に変更すると、ブロックは NaN
を出力します。
負の値の符号付き平方根
この例では、負の値を持つ入力信号の符号付き平方根を計算する方法を示します。
ブロック入力が負で、[関数] が signedSqrt
に設定されている場合、Sqrt ブロックの出力は [出力信号タイプ] パラメーターの設定にかかわらず同じになります。1 つ目の Display ブロックの [数値表示形式] を decimal (Stored Integer)
に設定すると、複素数出力の虚数部の値を表示できます。
浮動小数点入力の rSqrt
この例では、浮動小数点入力信号の rSqrt を計算する方法を示します。Sqrt ブロックには、次の設定があります。
メソッド =
Newton-Raphson
反復回数 =
1
中間結果のデータ型 =
Inherit: Inherit from input
ニュートン・ラフソン アルゴリズムの 1 回の反復後、ブロック出力は最終値の 0.0004 以内 (0.4834) になります。
固定小数点入力の rSqrt
この例では、固定小数点入力信号の rSqrt を計算する方法を示します。Sqrt ブロックには、次の設定があります。
メソッド =
Newton-Raphson
反復回数 =
1
中間結果のデータ型 =
Inherit: Inherit from input
ニュートン・ラフソン アルゴリズムの 1 回の反復後、ブロック出力は最終値の 0.0459 以内 (0.4834) になります。
端子
入力
Port_1 — 入力信号
スカラー | ベクトル | 行列
平方根、符号付き平方根または逆平方根を計算するためのブロックへの入力信号。関数 sqrt
は、複素数の固定小数点信号を除く実数入力または複素数入力を受け入れます。signedSqrt
と rSqrt
は複素数入力を受け入れません。入力信号は浮動小数点数でなければなりません。
次の表は、関数 sqrt
、rSqrt
、および signedSqrt
の浮動小数点、整数、および固定小数点データ型の複素数型と負の値のサポートをまとめています。
関数 | データ型 | 複素数 | 負の値 | |
---|---|---|---|---|
入力 | 出力 | |||
sqrt | 浮動小数点 | あり | あり | あり |
整数と固定小数点 | なし | なし | なし | |
| 浮動小数点 | なし | なし | あり |
整数と固定小数点 | なし | なし | なし | |
signedSqrt | 浮動小数点 | なし | あり | あり |
整数と固定小数点 | なし | なし | なし |
入力が負である場合は、signedSqrt
を除くすべての関数で [出力信号] を複素数に設定します。
データ型: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
出力
Port_1 — 出力信号
スカラー | ベクトル | 行列
入力信号の平方根、符号付き平方根または逆平方根である出力信号。入力が整数または固定小数点型である場合、出力は浮動小数点でなければなりません。
データ型: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
パラメーター
メイン
関数 — ブロックが実行する関数
sqrt
(既定値) | signedSqrt
| rSqrt
ブロックが計算する数学関数を指定します。ブロック アイコンが選択した関数に一致するように変わります。
関数 | ブロック アイコン |
---|---|
sqrt | |
signedSqrt | |
rSqrt |
依存関係
このパラメーターが [signedSqrt]
に設定されている場合、[中間結果のデータ型] パラメーターはディセーブルになります。
プログラムでの使用
ブロック パラメーター: Operator |
型: 文字ベクトル |
値: 'sqrt' | 'signedSqrt' | 'rSqrt' |
既定の設定: 'sqrt' |
出力信号タイプ — 出力信号タイプ
自動
(既定値) | 実数
| 複素数
ブロックの出力信号タイプを指定します。
関数 | 入力信号タイプ | 出力信号タイプ | ||
---|---|---|---|---|
自動 | 実数 | 複素数 | ||
|
| 非負の入力に対しては 負の入力に対しては | 非負の入力に対しては 負の入力に対しては |
|
|
|
|
| |
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
プログラムでの使用
ブロック パラメーター: OutputSignalType |
型: 文字ベクトル |
値: 'auto' | 'real' | 'complex' |
既定の設定: 'auto' |
サンプル時間 (継承は -1) — サンプルの間隔
-1
(既定値) | スカラー | ベクトル
サンプルの時間間隔を指定します。サンプル時間を継承するには、このパラメーターを -1
に設定します。詳細については、サンプル時間の指定を参照してください。
依存関係
このパラメーターは、-1
以外の値に設定した場合にのみ表示されます。詳細は、サンプル時間が推奨されないブロックを参照してください。
プログラムでの使用
ブロック パラメーター: SampleTime |
型: string スカラーまたは文字ベクトル |
既定の設定: "-1" |
アルゴリズム
メソッド — 平方根の逆数を計算するメソッド
Exact
(既定値) | Newton-Raphson
平方根の逆数を計算するメソッドを指定します。このパラメーターは関数 rSqrt
に対してのみ有効です。
メソッド | サポートされるデータ型 | このメソッドを使用できる場合 |
---|---|---|
Exact | 浮動小数点 | 近似は必要ありません。 メモ 入力または出力が浮動小数点である必要があります。 |
Newton-Raphson | 浮動小数点、固定小数点、および組み込み整数型 | 高速の近似計算が必要な場合。 |
[Exact]
メソッドでは、MATLAB の計算と一致する結果が得られます。
メモ
sqrt
と signedSqrt
のアルゴリズムは、ブロック ダイアログ ボックスの選択にかかわらず、常に [Exact]
タイプです。
プログラムでの使用
ブロック パラメーター: AlgorithmType |
型: 文字ベクトル |
値: 'Exact' | 'Newton-Raphson' |
既定の設定: 'Exact' |
反復回数 — ニュートン・ラフソン アルゴリズムに使用される反復回数
3
(既定値) | 整数
ニュートン・ラフソン アルゴリズムを実行するには、反復回数を指定します。このパラメーターは関数 rSqrt
と、[メソッド] の [ニュートン・ラフソン]
で有効です。
メモ
0 を入力すると、ブロック出力はニュートン・ラフソン アルゴリズムの初期推定になります。
プログラムでの使用
ブロック パラメーター: Iterations |
型: 文字ベクトル |
値: 整数 |
既定の設定: '3' |
データ型
データ属性の設定には [データ型アシスタント] が役立ちます。[データ型アシスタント] を使用するには、 をクリックします。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。
中間結果のデータ型 — 中間結果のデータ型
Inherit:Inherit via internal rule
(既定値) | 継承: Inherit from input
| 継承: 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>
[メイン] ペインで [関数] を 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' |
出力 — 出力データ型
継承: 1 番目の入力と同じ
(既定値) | 継承: 内部ルールによる継承
| 継承: 逆伝播による継承
| double
| single
| half
| int8
| int32
| uint32
| int64
| uint64
| fixdt(1,16,2^0,0)
| <data type expression>
| ...
出力データ型を指定します。型は継承されるか、直接指定されるか、Simulink.NumericType
などのデータ型オブジェクトとして表現されます。
依存関係
入力が単精度より小さい浮動小数点データ型の場合、[継承: 内部ルールによる継承]
出力データ型は単精度より小さい浮動小数点の出力型を継承するコンフィギュレーション パラメーターの設定によって変わります。データ型の符合化に必要なビット数が単精度データ型の符合化に必要な 32 ビットより少ない場合、データ型は単精度より小さくなります。たとえば、half
と int16
は単精度より小さくなります。
プログラムでの使用
ブロック パラメーター: 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 は、最小値を使って以下を行います。
一部のブロックに対するパラメーター範囲のチェック (ブロック パラメーターの最小値と最大値の指定を参照)
シミュレーション範囲のチェック (信号範囲の指定およびシミュレーション範囲のチェックの有効化を参照)
固定小数点データ型の自動スケーリング
モデルから生成するコードの最適化。この最適化により、アルゴリズム コードが削除され、SIL やエクスターナル モードなどの一部のシミュレーション モードの結果に影響を与えることがあります。詳細については、Optimize using the specified minimum and maximum values (Embedded Coder)を参照してください。
メモ
[出力の最小値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。代わりに、Saturation ブロックを使用してください。
プログラムでの使用
ブロック パラメーター: OutMin |
型: 文字ベクトル |
値: スカラー |
既定の設定: '[ ]' |
最大値 — 範囲チェックの最大出力値
[]
(既定値) | スカラー
Simulink が有限で実数の double のスカラー値としてチェックする出力範囲の上限値を指定します。
メモ
このブロックのデータ型としてバス オブジェクトを指定した場合、ブロックのバス データの最大値を設定しないでください。Simulink はこの設定を無視します。代わりに、データ型として指定したバス オブジェクトのバス要素の最大値を設定します。バス要素の [最大値] パラメーターの詳細については、Simulink.BusElement
を参照してください。
Simulink は、最大値を使って以下を行います。
一部のブロックに対するパラメーター範囲のチェック (ブロック パラメーターの最小値と最大値の指定を参照)
シミュレーション範囲のチェック (信号範囲の指定およびシミュレーション範囲のチェックの有効化を参照)
固定小数点データ型の自動スケーリング
モデルから生成するコードの最適化。この最適化により、アルゴリズム コードが削除され、SIL やエクスターナル モードなどの一部のシミュレーション モードの結果に影響を与えることがあります。詳細については、Optimize using the specified minimum and maximum values (Embedded Coder)を参照してください。
メモ
[出力の最大値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。代わりに、Saturation ブロックを使用してください。
プログラムでの使用
ブロック パラメーター: OutMax |
型: 文字ベクトル |
値: スカラー |
既定の設定: '[ ]' |
整数丸めモード — 固定小数点演算の丸めモード
負方向
(既定値) | 正方向
| 最も近い偶数方向
| 最も近い正の整数方向
| 最も近い整数方向
| 最も簡潔
| ゼロ方向
固定小数点演算の丸めモードを指定します。詳細については、丸め (Fixed-Point Designer)を参照してください。
プログラムでの使用
ブロック パラメーター: RndMeth |
型: 文字ベクトル |
値: 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero' |
既定の設定: 'Floor' |
固定小数点ツールによる変更に対して出力データ型の設定をロックする — 固定小数点ツールがデータ型をオーバーライドするのを防止
off
(既定値) | on
固定小数点ツールや固定小数点アドバイザーによる変更を避けるために、このブロックの出力データ型の設定をロックします。詳細については、[出力データ型の設定をロックする] の使用 (Fixed-Point Designer)を参照してください。
プログラムでの使用
ブロック パラメーター: LockScale |
型: 文字ベクトル |
値: 'off' | 'on' |
既定の設定: 'off' |
整数オーバーフローで飽和 — 整数オーバーフロー発生時の動作の選択
オフ
(既定値) | オン
動作 | このアクションを行う理由 | オーバーフロー発生時に起きること | 例 |
---|---|---|---|
このチェック ボックスをオンにする。 | モデルでオーバーフローが発生する可能性があるので、生成コードに飽和保護を明示的に組み込むことをお勧めします。 | オーバーフローは、データ型が表現できる最小値または最大値のいずれかに飽和します。 |
|
このチェック ボックスをオンにしない。 | 生成コードの効率を最適化することをお勧めします。 ブロックが範囲外の信号を処理する方法を指定しすぎないようにすることをお勧めします。詳細については、信号範囲のエラーのトラブルシューティングを参照してください。 | オーバーフローは、データ型によって表現される適切な値にラップされます。 |
|
このチェック ボックスをオンにすると、飽和は出力や結果だけでなく、このブロックの内部演算すべてに適用されます。通常、オーバーフローが可能ではない場合は、コード生成プロセスで検出されます。この場合、コード ジェネレーターでは飽和コードは生成されません。
プログラムでの使用
ブロック パラメーター: DoSatur |
型: 文字ベクトル |
値: 'off' | 'on' |
既定の設定: 'off' |
ブロックの特性
データ型 |
|
直達 |
|
多次元信号 |
|
可変サイズの信号 |
|
ゼロクロッシング検出 |
|
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
HDL コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための VHDL、Verilog および SystemVerilog のコードを生成します。
HDL Coder™ には、HDL の実装および合成されたロジックに影響する追加のコンフィギュレーション オプションがあります。
[関数] が [sqrt]
に設定されている Sqrt ブロックでは、コード ジェネレーターはさまざまなアーキテクチャとデータ型をサポートします。
[sqrtfunction]
アーキテクチャは、固定小数点型と浮動小数点型でのコード生成をサポートします。浮動小数点型を使用する場合、浮動小数点 IP ライブラリのパラメーターを [ネイティブ浮動小数点]
に設定します。ターゲット プラットフォーム上の設計をターゲットとする場合、[LatencyStrategy] と [CustomLatency] の HDL プロパティを指定して、周波数値の範囲から選択できます。
[UseMultiplier] HDL ブロック プロパティを [LatencyStrategy] および [CustomLatency] プロパティと組み合わせて使用することで、パイプライン化シフトと加算または乗算アルゴリズムを使用して平方根を計算するかどうかを指定できます。
このアーキテクチャでは、[HDL ブロック プロパティ] ダイアログ ボックスの [ネイティブ浮動小数点] タブで [HandleDenormals] および [LatencyStrategy] の設定を指定できます。
アーキテクチャ | 固定小数点 | ネイティブ浮動小数点 | HandleDenormals | LatencyStrategy |
---|---|---|---|---|
sqrtfunction | ✓ | ✓ | ✓ | ✓ |
sqrtnewton | ✓ | — | — | — |
sqrtnewtonsinglerate | ✓ | — | — | — |
recipsqrtnewton | ✓ | — | — | — |
recipsqrtnewtonsinglerate | ✓ | — | — | — |
このブロックには、生成されたコードで追加のレイテンシを導入するマルチサイクル実装があります。追加されたレイテンシを確認するには、生成されたモデルまたは検証モデルを表示します。生成されたモデルと検証モデル (HDL Coder)を参照してください。
アーキテクチャ | パラメーター | 追加のレイテンシのサイクル | 説明 |
---|---|---|---|
SqrtFunction (既定値) |
| パラメーターの選択、出力の語長、および入力と出力の小数部の長さに依存します。 | このアーキテクチャを指定するには、[関数] を パイプライン化シフト/加算アルゴリズムまたは乗算ベースのアルゴリズムを使用して、平方根を計算します。
レイテンシ計算については、HDLMathLib の Sqrt (HDL Coder) を参照してください。 [UseMultiplier] を |
SqrtNewton | Iterations | Iterations + 3 | このアーキテクチャを指定するには、[関数] を 反復ニュートン法を使用します。領域を最適化するにはこのオプションを選択します。
|
SqrtNewtonSingleRate | Iterations | (Iterations * 4) + 6 | このアーキテクチャを指定するには、[関数] を シングル レートのパイプライン化されたニュートン法を使用します。速度を最適化する場合、またはシングル レート実装を行う場合は、このオプションを選択します。
|
RecipSqrtNewton | Iterations | Iterations + 2 | このアーキテクチャを指定するには、[関数] を 反復ニュートン法を使用します。領域を最適化するにはこのオプションを選択します。 |
RecipSqrtNewtonSingleRate | Iterations | (Iterations * 4) + 5 | このアーキテクチャを指定するには、[関数] を シングル レートのパイプライン化されたニュートン法を使用します。速度を最適化する場合、またはシングル レート実装を行う場合は、このオプションを選択します。 |
ニュートン・ラフソン法反復法:
[ReciprocalRsqrtBasedNewton]
および [ReciprocalRsqrtBasedNewtonSingleRate]
は、次の式でニュートン・ラフソン法を実装します。
一般 | |
---|---|
ConstrainedOutputPipeline | 既存の遅延を設計内で移動することによって出力に配置するレジスタの数。分散型パイプラインではこれらのレジスタは再分散されません。既定の設定は |
Iterations |
|
InputPipeline | 生成されたコードに挿入する入力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
OutputPipeline | 生成されたコードに挿入する出力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
UseMultiplier |
[UseMultiplier] を |
LatencyStrategy | 設計内のブロックを、固定小数点型と浮動小数点型の [ [UseMultiplier] を |
CustomLatency | [LatencyStrategy] が [ |
ネイティブ浮動小数点 | |
---|---|
HandleDenormals | HDL Coder で追加のロジックを挿入して設計で非正規数を処理するかどうかを指定します。非正規数とは、その大きさが仮数の先頭にゼロを付けずに表現できる最小の浮動小数点数より小さい数値のことです。既定の設定は |
入力は符号なしのスカラー値でなければなりません。
出力は固定小数点スカラー値です。
PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。
固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。
バージョン履歴
R2010a で導入
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)