fi
固定小数点数値オブジェクトの作成
説明
固定小数点データ型を数値または変数に割り当てるには、fi コンストラクターを使用して fi オブジェクトを作成します。コンストラクターで、または numerictype オブジェクトと fimath オブジェクトを使用して、数値属性と算術ルールを指定できます。
作成
構文
説明
は、値をもたない、語長が 16 ビット、小数部の長さが 15 ビットの符号付き a = fifi オブジェクトを返します。
は、値 a = fi(v,s,w,slopeadjustmentfactor,fixedexponent,bias)v、符号属性 s、語長 w、slopeadjustmentfactor、fixedexponent、bias の fi オブジェクトを返します。
は、値が a = fi(v,T)v で numerictype T の fi オブジェクトを返します。
は、1 つ以上の名前と値のペアの引数で指定されたプロパティ値をもつ a = fi(___,Name,Value)fi オブジェクトを返します。
入力引数
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
fi オブジェクトの符号属性。数値または logical 1 (true) または 0 (false) として指定します。1 (true) の値は符号付きデータ型を示します。0 (false) の値は符号なしデータ型を示します。
データ型: logical
fi オブジェクトのビット単位の語長。正のスカラー整数として指定します。
語長は範囲 1 ≤ w ≤ 65535 の整数でなければなりません。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
fi オブジェクトの格納整数値のビット単位の小数部の長さ。スカラー整数として指定します。小数部の長さは範囲 -65535 ≤ f ≤ 65535 の整数でなければなりません。
小数部の長さを指定しない場合、fi オブジェクトは、指定した値、語長および符号属性のオーバーフローを回避しながら最高の精度を提供する小数部の長さを自動的に使用します。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
fi オブジェクトのスケーリングの傾き。正のスカラーとして指定します。
次の方程式は、傾きバイアスのスケーリングされた数値の実際値を表します。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
fi オブジェクトのスケーリングのバイアス。スカラーとして指定します。
次の方程式は、傾きバイアスのスケーリングされた数値の実際値を表します。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
fi オブジェクトの傾き調整係数。1 以上 2 未満のスカラーとして指定します。
次の方程式は、傾き、固定小数点の指数、傾き調整係数の間の関係を示します。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
fi オブジェクトの固定小数点の指数。スカラーとして指定します。
次の方程式は、傾き、固定小数点の指数、傾き調整係数の間の関係を示します。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
fi オブジェクトの数値型プロパティ。numerictype オブジェクトとして指定します。
fi オブジェクトの固定小数点演算プロパティ。fimath オブジェクトとして指定します。
fimath のプロパティが指定されていない場合、fi コンストラクターは、globalfimath の設定に関係なく、fi オブジェクトの作成には、最も近い整数への丸めを使用し、オーバーフロー時に飽和します。この動作の例は、fi オブジェクト コンストラクターでの丸めモードとオーバーフロー モードの指定を参照してください。
プロパティ
fi オブジェクトには次の 3 種類のプロパティがあります。
これらのプロパティは、fi オブジェクトの作成時に設定できます。fi オブジェクトのデータへのアクセスにはデータ プロパティを使用します。fimath プロパティと numerictype プロパティは、推移性により fi オブジェクトのプロパティにもなります。fimath プロパティによって、fi オブジェクトでの固定小数点算術演算の実行ルールが決まります。numerictype オブジェクトには固定小数点オブジェクトのすべてのデータ型とスケーリングの属性が含まれています。
例
既定のコンストラクターを使用して 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 オブジェクトを作成するには、コンストラクターで語長の後に 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 オブジェクトを作成できます。
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 オブジェクトの算術属性は、その 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 オブジェクトの入力引数 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 オブジェクトの作成時に丸めモードやオーバーフロー モードなどの 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 オブジェクトを作成すると、globalfimath の設定に関係なく、既定の RoundingMethod および OverflowAction が使用されます。
この動作を観察するため、globalfimath を指定します。
resetglobalfimath globalfimath('RoundingMethod','floor','OverflowAction','wrap')
ans =
RoundingMethod: Floor
OverflowAction: Wrap
ProductMode: FullPrecision
SumMode: FullPrecision
コンストラクターで fimath の設定を行わずに fi オブジェクトを作成します。
b = fi([3.6 128],1,8,0)
b =
4 127
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 8
FractionLength: 0
結果の b の値は、丸めとして Nearest、オーバーフロー アクションとして Saturate を使用します。この動作がアプリケーションに適していない場合は、回避策についてfi コンストラクターが globalfimath の規則に従わないを参照してください。
globalfimath をリセットして既定値に戻します。
resetglobalfimath;
この例では、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 で固定小数点値として使用するには、固定小数点オブジェクトの数値型を完全に指定しなければなりません。これらの値では最高精度の自動スケーリングはサポートされていません。
オーバーフローで飽和
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オブジェクトを使用します。
拡張機能
使用上の注意および制限:
入力引数なしの既定のコンストラクター構文はサポートされていません。
numerictypeが完全に指定されていない場合、fiへの入力は、定数値、fi、単一値または組み込み整数値でなければなりません。入力が組み込みの倍精度値の場合、それは定数でなければなりません。この制限により、fiが入力の既知のデータ型に基づいて自らの小数部の長さをオートスケールできるようになっています。コード生成では、データ型に関連するすべてのプロパティは定数でなければなりません。
固定小数点以外の Simulink® 入力については、
numerictypeオブジェクト情報が指定されていなければなりません。
HDL コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための VHDL、Verilog および SystemVerilog のコードを生成します。
バージョン履歴
R2006a より前に導入以前のリリースでは、fi、fimath、numerictype オブジェクトのあいまいなプロパティに対して警告が表示されていました。R2021a では、あいまいなプロパティ名のサポートは削除されています。代わりに正確なプロパティ名を使用してください。
以前のリリースでは、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 Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)