Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

fi

固定小数点数値オブジェクトの作成

説明

固定小数点データ型を数値または変数に割り当てるには、fi コンストラクターを使用して fi オブジェクトを作成します。コンストラクターで、または numerictype オブジェクトと fimath オブジェクトを使用して、数値属性と算術ルールを指定できます。

作成

説明

a = fi は、値をもたない、16 ビットの語長と 15 ビットの小数部の長さをもつ fi オブジェクトを返します。

a = fi(v) は、値が v で、既定のプロパティ値をもつ固定小数点オブジェクトを返します。

a = fi(v,s) は、符号属性 (符号付きまたは符号なし) s をもつ固定小数点オブジェクトを返します。

a = fi(v,s,w) は、w で指定された語長をもつ固定小数点オブジェクトを作成します。

a = fi(v,s,w,f) は、f で指定された小数部の長さを持つ固定小数点オブジェクトを作成します。

a = fi(v,s, w,slope,bias) は、勾配とバイアスのスケーリングを使用して固定小数点オブジェクトを作成します。

a = fi(v,s, w,slopeadjustmentfactor,fixedexponent,bias) は、勾配とバイアスのスケーリングを使用して固定小数点オブジェクトを作成します。

a = fi(v,T) は、値 v と、数値型プロパティ T をもつ固定小数点オブジェクトを作成します。

a = fi(___,F) は、fimath オブジェクト F で指定された算術設定をもつ固定小数点オブジェクトを作成します。

a = fi(___,Name,Value) は、1 つ以上の Name,Value のペアの引数で指定されたプロパティ値をもつ固定小数点オブジェクトを作成します。Name は一重引用符 ('') で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前/値の引数ペアを任意の順番で指定できます。

入力引数

すべて展開する

fi オブジェクトの値。スカラー、ベクトル、行列または多次元配列として指定します。

出力 fi オブジェクトの値は、fi コンストラクターで指定されたデータ型に量子化された入力の値です。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | fi

fi オブジェクトの符号属性。boolean として指定します。1 または true の値は符号付きデータ型を示します。0 または false の値は、符号なしデータ型を示します。

データ型: logical

fi オブジェクトの語長 (ビット単位)。スカラー整数として指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

fi オブジェクトの小数部の長さ (ビット単位)。スカラー整数として指定します。小数部の長さを指定しない場合、fi オブジェクトは、指定した値、語長および符号属性のオーバーフローを回避しながら最高の精度を提供する小数部の長さを自動的に使用します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

スケーリングの勾配。スカラー整数として指定します。次の方程式は、勾配バイアスのスケーリングされた数値の実際値を表します。

real-world value=(slope×integer)+bias

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

スケーリングのバイアス。スカラーとして指定します。次の方程式は、勾配バイアスのスケーリングされた数値の実際値を表します。

real-world value=(slope×integer)+bias

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

勾配バイアスのスケーリングされた数値の勾配調整係数。次の方程式は、勾配、固定小数点の指数、勾配調整係数の間の関係を示します。

slope=slope adjustment factor×2fixed exponent

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

勾配バイアスのスケーリングされた数値の固定小数点の指数。次の方程式は、勾配、固定小数点の指数、勾配調整係数の間の関係を示します。

slope=slope adjustment factor×2fixed exponent

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

fi オブジェクトの数値型プロパティ。numerictype オブジェクトとして指定します。詳細については、numerictype を参照してください。

fi オブジェクトの固定小数点演算プロパティ。fimath オブジェクトとして指定します。詳細については、fimath を参照してください。

すべて折りたたむ

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=3×3 object
    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 オブジェクトの値と符号属性のみを指定すると、語長の既定値は 16 ビットになり、小数部の長さはオーバーフローなしに可能な最高精度を実現するように設定されます。

a = fi(pi, 1)
a = 
    3.1416

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13

小数部の長さ、入力引数 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 ビット残します。

a = fi(pi, 0, 8)
a = 
    3.1406

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Unsigned
            WordLength: 8
        FractionLength: 6

勾配バイアスのスケーリングされた数値の実際値は以下で表されます。

realworldvalue=(slope×integer)+bias

勾配とバイアスのスケーリングを使用する 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 オブジェクトの DataTypeMode プロパティ a は、lope and bias scaling です。

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

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

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

固定小数点数に 2 進小数点表現を使用している場合、小数部の長さが語長を超えることがあります。この場合、2 進数小数点と最初の有効 2 進数の間に暗黙的な先行ゼロ (正数の場合) または先行 1 (負数の場合) が存在します。

語長が 8、小数部の長さが 10 で格納された整数値が 5 の符号付き値について考えます。以下の方程式を使用して実際値を計算します。

realworldvalue=storedinteger×2-fractionlength

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 進数) と同等です。

固定小数点数に 2 進小数点表現を使用している場合、小数部の長さが負になることがあります。この場合、2 進数小数点と最初の有効 2 進数の間に暗黙的な後続ゼロ (正数の場合) または後続 1 (負数の場合) が存在します。

語長が 8、小数部の長さが -2 で格納された整数値が 5 の符号付きデータ型について考えます。以下の方程式を使用して格納整数値を計算します。

realworldvalue=storedinteger×2-fractionlength

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 オブジェクトの作成中に丸めモードとオーバーフロー モードなどの演算プロパティを設定できます。

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 オブジェクトの値は整数でなければなりません。

インデックス付けする配列を設定します。

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

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;

拡張機能

R2006a で導入