このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
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)