Main Content

fi

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

説明

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

作成

説明

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

a = fi(v) は、値が v、語長が 16 ビット、小数部の長さが最高精度の符号付き fi オブジェクトを返します。

a = fi(v,s) は、値が v、符号属性が s、語長が 16 ビット、小数部の長さが最高精度の fi オブジェクトを返します。

a = fi(v,s,w) は、値が v、符号属性が s、語長が wfi オブジェクトを返します。

a = fi(v,s,w,f) は、値が v、符号属性が s、語長が w、小数部の長さが ffi オブジェクトを返します。

a = fi(v,s,w,slope,bias) は、値が v、符号属性が sslopebias をもつ fi オブジェクトを返します。

a = fi(v,s,w,slopeadjustmentfactor,fixedexponent,bias) は、値が v、符号属性が sslopeadjustmentfactorfixedexponent、および bias をもつ fi オブジェクトを返します。

a = fi(v,T) は、値が vnumerictype Tfi オブジェクトを返します。

a = fi(___,F) は、fimath Ffi オブジェクトを返します。

a = fi(___,Name,Value) は、1 つ以上の名前と値のペアの引数で指定されたプロパティ値をもつ fi オブジェクトを返します。

入力引数

すべて展開する

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

返される fi オブジェクトの値は、fi コンストラクターで指定されたデータ型に量子化された入力 v の値です。入力 v が double 以外で、語長または小数部の長さを指定しない場合、返される fi オブジェクトでは入力の数値型が保持されます。例については、double 以外の値からの fi オブジェクトの作成を参照してください。

非有限値 -InfInf、および NaN を値として指定できるのは、fi オブジェクトの数値型を完全に指定する場合だけです。fi が固定小数点数値型として指定されている場合は、次のようになります。

  • NaN0 にマッピングされます。

  • fi オブジェクトの 'OverflowAction' プロパティが 'Wrap' に設定されている場合、-InfInf0 にマッピングされます。

  • 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 オブジェクトのビット単位の語長。正のスカラー整数として指定します。

fi オブジェクトには 65535 ビットの語長制限があります。

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

fi オブジェクトの格納整数値のビット単位の小数部の長さ。スカラー整数として指定します。

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

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

fi オブジェクトのスケーリングの勾配。正のスカラーとして指定します。

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

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

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

fi オブジェクトのスケーリングのバイアス。スカラーとして指定します。

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

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

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

fi オブジェクトの勾配調整係数。1 以上 2 未満のスカラーとして指定します。

次の方程式は、勾配、固定小数点の指数、勾配調整係数の間の関係を示します。

slope=slope adjustment factor×2fixed exponent

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

fi オブジェクトの固定小数点の指数。スカラーとして指定します。

次の方程式は、勾配、固定小数点の指数、勾配調整係数の間の関係を示します。

slope=slope adjustment factor×2fixed exponent

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

fi オブジェクトの数値型プロパティ。numerictype オブジェクトとして指定します。

fi オブジェクトの固定小数点演算プロパティ。fimath オブジェクトとして指定します。

プロパティ

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

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

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

勾配とバイアスのスケーリングを使用する fi オブジェクトを作成するには、コンストラクターで語長の後に slope 引数と bias 引数を含めます。たとえば、勾配が 3 でバイアスが 2fi オブジェクトを作成します。

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 オブジェクト aDataTypeMode プロパティは、Fixed-point: slope and bias scaling です。

また、次のように勾配調整係数と固定小数点の指数を指定することもできます。

slope = slopeadjustmentfactor× 2fixedexponent.

たとえば、勾配調整係数が 1.5、固定小数点の指数が 1、バイアスが 2fi オブジェクトを作成します。

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

この例では、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;

非数値 -InfInf および NaNfi で固定小数点値として使用するには、固定小数点オブジェクトの数値型を完全に指定しなければなりません。これらの値では最高精度の自動スケーリングはサポートされていません。

オーバーフローで飽和

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 オブジェクトの数値型がオーバーフロー時にラップするように指定されている場合、-InfInf および 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 オブジェクトを使用します。

拡張機能

HDL コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための VHDL、Verilog および SystemVerilog のコードを生成します。

バージョン履歴

R2006a より前に導入

すべて展開する