このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
fi
固定小数点数値オブジェクトの作成
説明
固定小数点データ型を数値または変数に割り当てるには、fi
コンストラクターを使用して fi
オブジェクトを作成します。コンストラクターで、または numerictype
オブジェクトと fimath
オブジェクトを使用して、数値属性と算術ルールを指定できます。
作成
構文
説明
は、値をもたない、語長が 16 ビット、小数部の長さが 15 ビットの符号付き a
= fifi
オブジェクトを返します。
は、値が a
= fi(v
,s
,w
,slopeadjustmentfactor
,fixedexponent
,bias
)v
、符号属性が s
で slopeadjustmentfactor
、fixedexponent
、および bias
をもつ fi
オブジェクトを返します。
は、値が a
= fi(v
,T
)v
で numerictype
T
の fi
オブジェクトを返します。
は、1 つ以上の名前と値のペアの引数で指定されたプロパティ値をもつ a
= fi(___,Name,Value
)fi
オブジェクトを返します。
入力引数
v
— 値
スカラー | ベクトル | 行列 | 多次元配列
fi
オブジェクトの値。スカラー、ベクトル、行列または多次元配列として指定します。
返される fi
オブジェクトの値は、fi
コンストラクターで指定されたデータ型に量子化された入力 v
の値です。入力 v
が double 以外で、語長または小数部の長さを指定しない場合、返される fi
オブジェクトでは入力の数値型が保持されます。例については、double 以外の値からの 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
— 符号属性
true
または 1
(既定値) | false
または 0
fi
オブジェクトの符号属性。数値または logical 1
(true
) または 0
(false
) として指定します。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
— 勾配
正のスカラー
fi
オブジェクトのスケーリングの勾配。正のスカラーとして指定します。
次の方程式は、勾配バイアスのスケーリングされた数値の実際値を表します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
bias
— バイアス
スカラー
fi
オブジェクトのスケーリングのバイアス。スカラーとして指定します。
次の方程式は、勾配バイアスのスケーリングされた数値の実際値を表します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
slopeadjustmentfactor
— 勾配調整係数。
1
以上 2
未満のスカラー
fi
オブジェクトの勾配調整係数。1
以上 2
未満のスカラーとして指定します。
次の方程式は、勾配、固定小数点の指数、勾配調整係数の間の関係を示します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
fixedexponent
— 固定小数点の指数
スカラー
fi
オブジェクトの固定小数点の指数。スカラーとして指定します。
次の方程式は、勾配、固定小数点の指数、勾配調整係数の間の関係を示します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
T
— 数値型プロパティ
numerictype
オブジェクト
fi
オブジェクトの数値型プロパティ。numerictype
オブジェクトとして指定します。
F
— 固定小数点演算プロパティ
fimath
オブジェクト
fi
オブジェクトの固定小数点演算プロパティ。fimath
オブジェクトとして指定します。
プロパティ
fi
オブジェクトには次の 3 種類のプロパティがあります。
これらのプロパティは、fi
オブジェクトの作成時に設定できます。fi
オブジェクトのデータへのアクセスにはデータ プロパティを使用します。fimath
プロパティと numerictype
プロパティは、推移性により fi
オブジェクトのプロパティにもなります。fimath
プロパティによって、fi
オブジェクトでの固定小数点算術演算の実行ルールが決まります。numerictype
オブジェクトには固定小数点オブジェクトのすべてのデータ型とスケーリングの属性が含まれています。
例
fi
オブジェクトの作成
既定のコンストラクターを使用して fi
オブジェクトを作成します。コンストラクターは、値をもたない、語長が 16 ビット、小数部の長さが 15 ビットの符号付き fi
オブジェクトを返します。
a = fi
a = [] DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 15
値が pi
、語長が 16 ビット、小数部の長さが最高精度の符号付き fi
オブジェクトを作成します。小数部の長さは、オーバーフローせずに可能な最高精度を実現するように自動的に設定されます。
a = fi(pi)
a = 3.1416 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 13
値が pi
の符号なし fi
オブジェクトを作成します。fi
オブジェクトの値と符号属性のみを指定すると、語長は既定で 16 ビットになり、小数部の長さは最高精度になります。
a = fi(pi,0)
a = 3.1416 DataTypeMode: Fixed-point: binary point scaling Signedness: Unsigned WordLength: 16 FractionLength: 14
語長が 8 ビット、小数部の長さが最高精度の符号付き fi
オブジェクトを作成します。データ型が符号付きの場合、値の整数部を表すために 3 ビットが必要になるため、この例の a
の小数部の長さは 5
です。
a = fi(pi,1,8)
a = 3.1562 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 8 FractionLength: 5
fi
オブジェクトが符号なしの場合、整数部を表すために必要なのは 2 ビットのみであり、小数部に 6 ビット残します。
b = fi(pi,0,8)
b = 3.1406 DataTypeMode: Fixed-point: binary point scaling Signedness: Unsigned WordLength: 8 FractionLength: 6
値 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
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
オブジェクトを作成するには、コンストラクターで語長の後に slope
引数と bias
引数を含めます。たとえば、勾配が 3
でバイアスが 2
の fi
オブジェクトを作成します。
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
プロパティは、Fixed-point: slope and bias scaling
です。
また、次のように勾配調整係数と固定小数点の指数を指定することもできます。
.
たとえば、勾配調整係数が 1.5
、固定小数点の指数が 1
、バイアスが 2
の fi
オブジェクトを作成します。
a = fi(pi,1,16,1.5,1,2)
a = 2 DataTypeMode: Fixed-point: slope and bias scaling Signedness: Signed WordLength: 16 Slope: 3 Bias: 2
numerictype
オブジェクトからの fi
オブジェクトの作成
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
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
double 以外の値からの fi
オブジェクトの作成
fi
オブジェクトの入力引数 v
が double 以外で、語長または小数部の長さのプロパティを指定しない場合、返される fi
オブジェクトでは入力の数値型が保持されます。
組み込み整数からの 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
オブジェクトの作成
入力値が 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
fi
オブジェクト コンストラクターでの丸めモードとオーバーフロー モードの指定
fi
オブジェクトの作成時に丸めモードやオーバーフロー モードなどの fimath
プロパティを設定できます。
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
オブジェクトに対するデータ型オーバーライドの設定
この例では、fipref
オブジェクトの DataTypeOverride
設定を使用して、double、single、またはスケーリングされた double で fi
オブジェクトをオーバーライドする方法を示します。fipref
オブジェクトはすべての 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
fipref
オブジェクトを使用して、double へのデータ型オーバーライドをオンにします。
fipref('DataTypeOVerride','TrueDoubles')
ans = NumberDisplay: 'RealWorldValue' NumericTypeDisplay: 'full' FimathDisplay: 'full' LoggingMode: 'Off' DataTypeOverride: 'TrueDoubles' DataTypeOverrideAppliesTo: 'AllNumericTypes'
DataTypeOverride
プロパティを指定せずに新しい fi
オブジェクトを作成し、fipref
を使用して指定されたデータ型オーバーライド設定が使用されるようにします。
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
ヒント
fi
オブジェクトの表示、ログ、およびデータ型オーバーライドの基本設定を制御するには、fipref
オブジェクトを使用します。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用に関するメモと制限:
入力引数なしの既定のコンストラクター構文はサポートされていません。
numerictype
が完全に指定されていない場合、fi
への入力は、定数値、fi
、単一値または組み込み整数値でなければなりません。入力が組み込みの倍精度値の場合、それは定数でなければなりません。この制限により、fi
が入力の既知のデータ型に基づいて自らの小数部の長さをオートスケールできるようになっています。コード生成では、データ型に関連するすべてのプロパティは定数でなければなりません。
固定小数点以外の Simulink® 入力については、
numerictype
オブジェクト情報が指定されていなければなりません。
HDL コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための VHDL、Verilog および SystemVerilog のコードを生成します。
バージョン履歴
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)