fi
固定小数点数値オブジェクトの作成
説明
固定小数点データ型を数値または変数に割り当てるには、fi
コンストラクターを使用して fi
オブジェクトを作成します。コンストラクターで、または numerictype
オブジェクトと fimath
オブジェクトを使用して、数値属性と算術ルールを指定できます。
作成
構文
説明
は、値をもたない、16 ビットの語長と 15 ビットの小数部の長さをもつ a
= fifi
オブジェクトを返します。
は、勾配とバイアスのスケーリングを使用して固定小数点オブジェクトを作成します。a
= fi(v
,s
,w
,slopeadjustmentfactor
,fixedexponent
,bias
)
は、1 つ以上の a
= fi(___,Name,Value
)Name,Value
のペアの引数で指定されたプロパティ値をもつ固定小数点オブジェクトを作成します。Name
は一重引用符 (''
) で囲まなければなりません。Name1,Value1,...,NameN,ValueN
のように、複数の名前と値の引数ペアを任意の順番で指定できます。
入力引数
v
— 値
スカラー | ベクトル | 行列 | 多次元配列
fi
オブジェクトの値。スカラー、ベクトル、行列または多次元配列として指定します。
出力 fi
オブジェクトの値は、fi
コンストラクターで指定されたデータ型に量子化された入力の値です。
非有限値 -Inf
、Inf
および NaN
を値として指定できるのは、fi
オブジェクトの数値型を完全に指定する場合だけです。fi
が固定小数点数値型として指定されている場合は、次のようになります。
NaN
は0
にマッピングされます。fi
オブジェクトの'OverflowAction'
プロパティが'Wrap'
に設定されている場合、-Inf
とInf
は0
にマッピングされます。fi
オブジェクトの'OverflowAction'
プロパティが'Saturate'
に設定されている場合、Inf
は表現可能な最大値にマッピングされ、-Inf
は表現可能な最小値にマッピングされます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| fi
s
— 符号属性
1 (既定値) | 0
fi
オブジェクトの符号属性。boolean として指定します。1
または true
の値は符号付きデータ型を示します。0
または false
の値は、符号なしデータ型を示します。
データ型: logical
w
— 語長
16 (既定値) | スカラー整数
fi
オブジェクトの語長 (ビット単位)。スカラー整数として指定します。
fi
オブジェクトには 65535 ビットの語長制限があります。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
f
— 小数部の長さ
15 (既定値) | スカラー整数
fi
オブジェクトの小数部の長さ (ビット単位)。スカラー整数として指定します。小数部の長さを指定しない場合、fi
オブジェクトは、指定した値、語長および符号属性のオーバーフローを回避しながら最高の精度を提供する小数部の長さを自動的に使用します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
slope
— 勾配
スカラー整数
スケーリングの勾配。スカラー整数として指定します。次の方程式は、勾配バイアスのスケーリングされた数値の実際値を表します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
bias
— バイアス
スカラー
スケーリングのバイアス。スカラーとして指定します。次の方程式は、勾配バイアスのスケーリングされた数値の実際値を表します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
slopeadjustmentfactor
— 勾配調整係数。
スカラー整数
勾配バイアスのスケーリングされた数値の勾配調整係数。次の方程式は、勾配、固定小数点の指数、勾配調整係数の間の関係を示します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
fixedexponent
— 固定小数点の指数
スカラー整数
勾配バイアスのスケーリングされた数値の固定小数点の指数。次の方程式は、勾配、固定小数点の指数、勾配調整係数の間の関係を示します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
T
— 数値型プロパティ
numerictype
オブジェクト
fi
オブジェクトの数値型プロパティ。numerictype
オブジェクトとして指定します。詳細については、numerictype
を参照してください。
F
— 固定小数点演算プロパティ
fimath
オブジェクト
fi
オブジェクトの固定小数点演算プロパティ。fimath
オブジェクトとして指定します。詳細については、fimath
を参照してください。
プロパティ
例
fi
オブジェクトの作成
値 pi
、語長 8 ビット、小数部の長さ 3 ビットの符号付き fi
オブジェクトを作成します。
a = fi(pi,1,8,3)
a = 3.1250 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 8 FractionLength: 3
fi
オブジェクトの配列の作成
16 ビットの語長と 12 ビットの小数部の長さの fi
オブジェクトの配列を作成します。
a = fi((magic(3)/10), 1, 16, 12)
a = 0.8000 0.1001 0.6001 0.3000 0.5000 0.7000 0.3999 0.8999 0.2000 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 12
既定の語長と小数部の長さをもつ fi
オブジェクトの作成
fi
オブジェクトの値と符号属性のみを指定すると、語長の既定値は 16 ビットになり、小数部の長さはオーバーフローなしに可能な最高精度を実現するように設定されます。
a = fi(pi, 1)
a = 3.1416 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 13
既定の精度をもつ fi
オブジェクトの作成
小数部の長さ、入力引数 f
を指定しない場合、fi
オブジェクトの小数部の長さの既定値は、最高精度を提供する小数部の長さになります。
a = fi(pi,1,8)
a = 3.1562 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 8 FractionLength: 5
データ型が符号付きの場合、値の整数部を表すために 3 ビットが必要になるため、fi
オブジェクト a
の小数部の長さは 5 です。fi
オブジェクトが符号なしデータ型を使用する場合、整数部を表すために必要なのは 2 ビットのみであり、小数部に 6 ビット残します。
b = fi(pi,0,8)
b = 3.1406 DataTypeMode: Fixed-point: binary point scaling Signedness: Unsigned WordLength: 8 FractionLength: 6
勾配とバイアスのスケーリングによる fi
オブジェクトの作成
勾配バイアスのスケーリングされた数値の実際値は以下で表されます。
勾配とバイアスのスケーリングを使用する fi
オブジェクトを作成するには、コンストラクターで語長の後に slope
引数と bias
引数を含めます。
a = fi(pi, 1, 16, 3, 2)
a = 2 DataTypeMode: Fixed-point: slope and bias scaling Signedness: Signed WordLength: 16 Slope: 3 Bias: 2
fi
オブジェクト a
の DataTypeMode
プロパティは、slope and bias scaling
です。
double ではない値による fi
オブジェクトの作成
fi
オブジェクトの入力引数の値 v
が double でなく、語長または小数部の長さのプロパティを指定しない場合、fi
オブジェクトは入力 v
の数値型を保持します。
組み込み整数からの fi
オブジェクトの作成
入力が組み込みの整数の場合、固定小数点の属性はその整数型の属性と一致します。
v1 = uint32(5); a1 = fi(v1)
a1 = 5 DataTypeMode: Fixed-point: binary point scaling Signedness: Unsigned WordLength: 32 FractionLength: 0
v2 = int8(5); a2 = fi(v2)
a2 = 5 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 8 FractionLength: 0
fi
オブジェクトからの fi
オブジェクトの作成
入力値が fi
オブジェクトの場合、出力は入力の fi
オブジェクトと同じ語長、小数部の長さ、符号属性を使用します。
v = fi(pi, 1, 24, 12); a = fi(v)
a = 3.1416 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 24 FractionLength: 12
logical からの fi
オブジェクトの作成
入力 v
が logical の場合、出力 fi
オブジェクトの DataTypeMode
プロパティは Boolean
です。
v = true; a = fi(v)
a = 1 DataTypeMode: Boolean
single からの fi
オブジェクトの作成
入力が single の場合、出力の DataTypeMode
プロパティは Single
です。
v = single(pi); a = fi(v)
a = 3.1416 DataTypeMode: Single
関連する fimath
オブジェクトによる fi
オブジェクトの作成
fi
オブジェクトの算術属性は、その fi
オブジェクトに付加されている fimath
オブジェクトによって定義されます。
fimath
オブジェクトを作成し、OverflowAction
プロパティ、RoundingMethod
プロパティ、ProductMode
プロパティを指定します。
F = fimath('OverflowAction', 'Wrap', 'RoundingMethod','Floor', 'ProductMode','KeepMSB')
F = RoundingMethod: Floor OverflowAction: Wrap ProductMode: KeepMSB ProductWordLength: 32 SumMode: FullPrecision
fi
オブジェクトを作成し、fimath
オブジェクト F
をコンストラクターで指定します。
a = fi(pi, F)
a = 3.1415 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 13 RoundingMethod: Floor OverflowAction: Wrap ProductMode: KeepMSB ProductWordLength: 32 SumMode: FullPrecision
関数 removefimath
を使用して関連する fimath
オブジェクトを削除し、算術設定をその既定値に戻します。
a = removefimath(a)
a = 3.1415 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 13
fi
オブジェクトからの numerictype
オブジェクトの作成
numerictype
オブジェクトには fi
オブジェクトのデータ型情報がすべて含まれます。numerictype
プロパティは、推移性により fi
オブジェクトのプロパティにもなります。
numerictype
オブジェクトを fi
コンストラクターで指定し、既存の numerictype
オブジェクトのプロパティをすべて使用する fi
オブジェクトを作成できます。
T = numerictype(0,24,16)
T = DataTypeMode: Fixed-point: binary point scaling Signedness: Unsigned WordLength: 24 FractionLength: 16
a = fi(pi, T)
a = 3.1416 DataTypeMode: Fixed-point: binary point scaling Signedness: Unsigned WordLength: 24 FractionLength: 16
小数部の長さが語長よりも長い fi
オブジェクトの作成
固定小数点数に 2 進小数点表現を使用している場合、小数部の長さが語長を超えることがあります。この場合、2 進数小数点と最初の有効 2 進数の間に暗黙的な先行ゼロ (正数の場合) または先行 1 (負数の場合) が存在します。
語長が 8、小数部の長さが 10 で格納された整数値が 5 の符号付き値について考えます。以下の方程式を使用して実際値を計算します。
realWorldValue = 5*2^(-10)
realWorldValue = 0.0049
符号付き fi
オブジェクトを、値 realWorldValue
、語長 8 ビット、小数部の長さ 10 ビットで作成します。
a = fi(realWorldValue, 1, 8, 10)
a = 0.0049 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 8 FractionLength: 10
関数 int
を使用して a
の格納整数値を取得します。
int(a)
ans = int8
5
関数 bin
を使用して、格納整数値を 2 進形式で表示します。
bin(a)
ans = '00000101'
小数部の長さが語長より 2 ビット長いため、格納された整数の 2 進数値は X.XX00000101
となります。ここで、X
は暗黙的ゼロのプレースホルダーです。0.0000000101 (2 進数) は 0.0049 (10 進数) と同等です。
小数部の長さが負の fi
オブジェクトの作成
固定小数点数に 2 進小数点表現を使用している場合、小数部の長さが負になることがあります。この場合、2 進数小数点と最初の有効 2 進数の間に暗黙的な後続ゼロ (正数の場合) または後続 1 (負数の場合) が存在します。
語長が 8、小数部の長さが -2 で格納された整数値が 5 の符号付きデータ型について考えます。以下の方程式を使用して格納整数値を計算します。
realWorldValue = 5*2^(2)
realWorldValue = 20
符号付き fi
オブジェクトを、値 realWorldValue
、語長 8 ビット、小数部の長さ -2 ビットで作成します。
a = fi(realWorldValue, 1, 8, -2)
a = 20 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 8 FractionLength: -2
関数 int
を使用して a
の格納整数値を取得します。
int(a)
ans = int8
5
関数 bin
を使用して a
の 2 進数値を取得します。
bin(a)
ans = '00000101'
小数部の長さが負であるため、格納された整数の 2 進数値は 00000101XX
となります。ここで、X
は暗黙的ゼロのプレースホルダーです。0000010100 (2 進数) は 20 (10 進数) と同等です。
丸めモードとオーバーフロー モードを指定する fi
オブジェクトの作成
fi
オブジェクトの作成中に丸めモードとオーバーフロー モードなどの演算プロパティを設定できます。
a = fi(pi, 'RoundingMethod', 'Floor', 'OverflowAction', 'Wrap')
a = 3.1415 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 13 RoundingMethod: Floor OverflowAction: Wrap ProductMode: FullPrecision SumMode: FullPrecision
RoundingMethod
プロパティと OverflowAction
プロパティは fimath
オブジェクトのプロパティです。これらのプロパティを fi
コンストラクターで指定すると、ローカル fimath
オブジェクトが fi
オブジェクトに関連付けられます。
関数 removefimath
を使用してローカル fimath
を削除し、演算プロパティをその既定値に設定し直します。
a = removefimath(a)
a = 3.1415 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 13
インデックス引数としての fi
の使用
fi
オブジェクトをインデックスとして使用する場合、fi
オブジェクトの値は整数でなければなりません。
インデックス付けする配列を設定します。
x = 10:-1:1;
整数値 fi
オブジェクトを作成し、x
へのインデックス付けに使用します。
a = fi(3); y = x(a)
y = 8
for
ループ内のインデックスとしての fi
の使用
fi
オブジェクトを作成して for ループのインデックスとして使用します。インデックスの値は整数でなければなりません。
a = fi(1, 0, 8, 0); b = fi(2, 0, 8, 0); c = fi(10, 0, 8, 0); for x = a:b:c x end
x = 1 DataTypeMode: Fixed-point: binary point scaling Signedness: Unsigned WordLength: 8 FractionLength: 0
x = 3 DataTypeMode: Fixed-point: binary point scaling Signedness: Unsigned WordLength: 8 FractionLength: 0
x = 5 DataTypeMode: Fixed-point: binary point scaling Signedness: Unsigned WordLength: 8 FractionLength: 0
x = 7 DataTypeMode: Fixed-point: binary point scaling Signedness: Unsigned WordLength: 8 FractionLength: 0
x = 9 DataTypeMode: Fixed-point: binary point scaling Signedness: Unsigned WordLength: 8 FractionLength: 0
fi
オブジェクトへのデータ型オーバーライドの設定
fipref
オブジェクトはすべての fi
オブジェクトに対する表示とログ作成の属性を定義します。fipref
オブジェクトの DataTypeOverride
設定を使用して、double、single、またはスケーリングされた double で fi
オブジェクトをオーバーライドします。
後で復元するために現在の fipref
設定を保存します。
fp = fipref; initialDTO = fp.DataTypeOverride;
既定の設定および元の fipref
設定で fi
オブジェクトを作成します。
a = fi(pi)
a = 3.1416 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 13
データ型オーバーライドを double に切り替え、その DataTypeOverride
プロパティを指定しないで新しい fi
オブジェクトを作成し、fipref
を使用して指定されたデータ型オーバーライド設定が使用されるようにします。
fipref('DataTypeOVerride', 'TrueDoubles')
ans = NumberDisplay: 'RealWorldValue' NumericTypeDisplay: 'full' FimathDisplay: 'full' LoggingMode: 'Off' DataTypeOverride: 'TrueDoubles' DataTypeOverrideAppliesTo: 'AllNumericTypes'
a = fi(pi)
a = 3.1416 DataTypeMode: Double
今度は、fi
オブジェクトを作成してその DataTypeOverride
設定を off
に設定し、fipref
オブジェクトのデータ型オーバーライド設定が無視されるようにします。
b = fi(pi, 'DataTypeOverride', 'Off')
b = 3.1416 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 13
この例の開始時に保存した fipref 設定を復元します。
fp.DataTypeOverride = initialDTO;
-Inf
、Inf
および NaN
に対する fi
の動作
非数値 -Inf
、Inf
および NaN
を fi
で固定小数点値として使用するには、固定小数点オブジェクトの数値型を完全に指定しなければなりません。これらの値では最高精度の自動スケーリングはサポートされていません。
オーバーフローで飽和
fi
オブジェクトの数値型がオーバーフローで飽和するように指定されている場合、Inf
は指定された数値型の表現可能な最大値にマッピングされ、-Inf
は表現可能な最小値にマッピングされます。NaN
はゼロにマッピングされます。
x = [-inf nan inf]; a = fi(x,1,8,0,'OverflowAction','Saturate') b = fi(x,0,8,0,'OverflowAction','Saturate')
a = -128 0 127 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 8 FractionLength: 0 RoundingMethod: Nearest OverflowAction: Saturate ProductMode: FullPrecision SumMode: FullPrecision b = 0 0 255 DataTypeMode: Fixed-point: binary point scaling Signedness: Unsigned WordLength: 8 FractionLength: 0 RoundingMethod: Nearest OverflowAction: Saturate ProductMode: FullPrecision SumMode: FullPrecision
オーバーフロー時にラップ
fi
オブジェクトの数値型がオーバーフロー時にラップするように指定されている場合、-Inf
、Inf
および NaN
はゼロにマッピングされます。
x = [-inf nan inf]; a = fi(x,1,8,0,'OverflowAction','Wrap') b = fi(x,0,8,0,'OverflowAction','Wrap')
a = 0 0 0 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 8 FractionLength: 0 RoundingMethod: Nearest OverflowAction: Wrap ProductMode: FullPrecision SumMode: FullPrecision b = 0 0 0 DataTypeMode: Fixed-point: binary point scaling Signedness: Unsigned WordLength: 8 FractionLength: 0 RoundingMethod: Nearest OverflowAction: Wrap ProductMode: FullPrecision SumMode: FullPrecision
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用に関するメモと制限:
入力引数なしの既定のコンストラクター構文はサポートされていません。
numerictype
が完全に指定されていない場合、fi
への入力は、定数値、fi
、単一値または組み込み整数値でなければなりません。入力が組み込みの倍精度値の場合、それは定数でなければなりません。この制限により、fi
が入力の既知のデータ型に基づいて自らの小数部の長さをオートスケールできるようになっています。コード生成では、データ型に関連するすべてのプロパティは定数でなければなりません。
固定小数点以外の Simulink® 入力については、
numerictype
オブジェクト情報が指定されていなければなりません。
HDL コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための Verilog および VHDL のコードを生成します。
バージョン履歴
R2006a で導入R2021a: fi
、fimath
、numerictype
オブジェクトのあいまいなプロパティ名はサポートされない
以前のリリースでは、fi
、fimath
、numerictype
オブジェクトのあいまいなプロパティに対して警告が表示されていました。R2021a では、あいまいなプロパティ名のサポートは削除されています。代わりに正確なプロパティ名を使用してください。
R2020b: -Inf
、Inf
および NaN
に対する fi
の既定の動作の変更
以前のリリースでは、fi
は非有限入力値 -Inf
、Inf
または NaN
が渡されるとエラーを返していました。fi
では、MATLAB® と Simulink が整数データ型に対して -Inf
、Inf
および NaN
を扱うのと同じ方法でこれらの入力が扱われるようになりました。
fi
が固定小数点数値型として指定されている場合は、次のようになります。
NaN
は0
にマッピングされます。fi
オブジェクトの'OverflowAction'
プロパティが'Wrap'
に設定されている場合、-Inf
とInf
は0
にマッピングされます。fi
オブジェクトの'OverflowAction'
プロパティが'Saturate'
に設定されている場合、Inf
は表現可能な最大値にマッピングされ、-Inf
は表現可能な最小値にマッピングされます。
この動作の例については、-Inf、Inf および NaN に対する fi の動作を参照してください。
メモ
入力値 -Inf
、Inf
または NaN
では最高精度のスケーリングはサポートされていません。
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)