ドキュメンテーション

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

fi

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

構文

a = fi
a = fi(v)
a = fi(v,s)
a = fi(v,s,w)
a = fi(v,s,w,f)
a = fi(v,s,w,slope,bias)
a = fi(v,s,w,slopeadjustmentfactor,fixedexponent,bias)
a = fi(v,T)
a = fi(v,F)
b = fi(a,F)
a = fi(v,T,F)
a = fi(v,s,F)
a = fi(v,s,w,F)
a = fi(v,s,w,f,F)
a = fi(v,s,w,slope,bias,F)
a = fi(v,s,w,slopeadjustmentfactor,fixedexponent,bias,F)
a = fi(...'PropertyName',PropertyValue...)
a = fi('PropertyName',PropertyValue...)

説明

コンストラクター関数 fi は次のように使用することができます。

  • a = fi は既定のコンストラクターであり、値をもたない、16 ビットの語長と 15 ビットの小数部の長さをもつ fi オブジェクトを返します。

  • a = fi(v) は、v が double のときに、値が v、語長が 16 ビット、小数部の長さが最高精度の符号付き固定小数点オブジェクトを返します。v が double でない場合は、fi コンストラクターは vnumerictype を維持します。double ではない値による fi オブジェクトの作成を参照してください。

  • a = fi(v,s) は、値が v で、Signed プロパティ値 s、16 ビットの語長、最高精度の小数部の長さをもつ固定小数点オブジェクトを返します。s は、符号なしの場合は 0 (偽)、符号付きの場合は 1 (真) です。

  • a = fi(v,s,w) は、値が v で、Signed プロパティ値 s、語長 w、最高精度の小数部の長さをもつ固定小数点オブジェクトを返します。

  • a = fi(v,s,w,f) は、値が v で、Signed プロパティ値 s、語長 w、小数部の長さ f をもつ固定小数点オブジェクトを返します。小数部の長さが語長より長いか、負である可能性があります。小数部の長さが語長よりも長い fi オブジェクトの作成および小数部の長さが負の fi オブジェクトの作成を参照してください。

  • a = fi(v,s,w,slope,bias) は、値が v で、Signed プロパティ値 s、語長 wslope、および bias をもつ固定小数点オブジェクトを返します。

  • a = fi(v,s,w,slopeadjustmentfactor,fixedexponent,bias) は、値が v で、Signed プロパティ値 s、語長 wslopeadjustmentfactorfixedexponent、および bias をもつ固定小数点オブジェクトを返します。

  • a = fi(v,T) は、値が v で、embedded.numerictype T をもつ固定小数点オブジェクトを返します。numerictype オブジェクトの詳細は、numerictype オブジェクトの作成を参照してください。

  • a = fi(v,F) は、値が v で、embedded.fimath F、16 ビットの語長、最高精度の小数部の長さをもつ固定小数点オブジェクトを返します。fimath オブジェクトの詳細は、fimath オブジェクトの作成を参照してください。

  • b = fi(a,F) では、fi オブジェクト a の値および numerictype オブジェクトを維持したまま、fimath オブジェクトを F に変更することができます。

  • a = fi(v,T,F) は、値が v で、embedded.numerictype Tembedded.fimath F をもつ固定小数点オブジェクトを返します。構文 a = fi(v,T,F)a = fi(v,F,T) と等価です。

  • a = fi(v,s,F) は、値が v で、Signed プロパティ値 s、16 ビットの語長、最高精度の小数部の長さ、embedded.fimath F をもつ固定小数点オブジェクトを返します。

  • a = fi(v,s,w,F) は、値が v で、Signed プロパティ値 s、語長 w、最高精度の小数部の長さ、embedded.fimath F をもつ固定小数点オブジェクトを返します。

  • a = fi(v,s,w,f,F) は、値が v で、Signed プロパティ値 s、語長 w、小数部の長さ fembedded.fimath F をもつ固定小数点オブジェクトを返します。

  • a = fi(v,s,w,slope,bias,F) は、値が v で、Signed プロパティ値 s、語長 wslopebias、および embedded.fimath F をもつ固定小数点オブジェクトを返します。

  • a = fi(v,s,w,slopeadjustmentfactor,fixedexponent,bias,F) は、値が v で、Signed プロパティ値 s、語長 wslopeadjustmentfactorfixedexponentbias、および embedded.fimath F をもつ固定小数点オブジェクトを返します。

  • a = fi(...'PropertyName',PropertyValue...)a = fi('PropertyName',PropertyValue...) では、プロパティ名とプロパティ値のペアを使用して fi オブジェクトに対して固定小数点オブジェクトを設定することができます。

fi オブジェクトには、次の 3 つの一般的なプロパティ タイプがあります。

メモ

これらのプロパティの詳細は、「プロパティ リファレンス」のfi オブジェクト プロパティを参照してください。

データ プロパティ

fi オブジェクトのデータ プロパティは常に書き込み可能です。

  • binfi オブジェクトの格納整数値 (2 進数)

  • datafi オブジェクトの実際の数値

  • decfi オブジェクトの格納整数値 (10 進数)

  • doublefi オブジェクトの実際値。MATLAB® double として格納されています。

  • hexfi オブジェクトの格納整数値 (16 進数)

  • intfi オブジェクトの格納整数値。組み込み MATLAB 整数データ型で格納されています。

  • octfi オブジェクトの格納整数値 (8 進数)

  • Valuefi オブジェクトの完全精度の実際値。文字ベクトルとして格納されます。

これらのプロパティの詳細は、fi オブジェクト プロパティを参照してください。

fimath プロパティ

fi オブジェクトを作成し、fimath オブジェクト プロパティを fi コンストラクターで指定すると、fimath オブジェクトが fi オブジェクトのプロパティとして作成されます。fi コンストラクター内の fimath プロパティを指定しない場合、返される fi には fimath オブジェクトが含まれません。

  • fimathfi オブジェクトに関連付けられた fimath プロパティ

以下の fimath プロパティは、推移性により、fi オブジェクトのプロパティでもあります。fimath オブジェクトの以下のプロパティは常に書き換え可能です。

  • CastBeforeSum — 両方のオペランドが加算前に加算データ型にキャストされるかどうか

    メモ

    SumModeFullPrecision に設定されていると、このプロパティは非表示になります。

  • MaxProductWordLength — 乗算データ型の最大許容語長

  • MaxSumWordLength — 加算データ型の最大許容語長

  • OverflowAction — オーバーフロー モード

  • ProductBias — 乗算データ型のバイアス

  • ProductFixedExponent — 乗算データ型の固定小数点の指数

  • ProductFractionLength — 乗算データ型の小数部の長さ (ビット単位)

  • ProductMode — 乗算データ型の決定方法の定義

  • ProductSlope — 乗算データ型の勾配

  • ProductSlopeAdjustmentFactor — 乗算データ型の勾配調整係数

  • ProductWordLength — 乗算データ型の語長 (ビット単位)

  • RoundingMethod — 丸めモード

  • SumBias — 加算データ型のバイアス

  • SumFixedExponent — 加算データ型の固定小数点の指数

  • SumFractionLength — 加算データ型の小数部の長さ (ビット単位)

  • SumMode — 加算データ型の決定方法の定義

  • SumSlope — 加算データ型の勾配

  • SumSlopeAdjustmentFactor — 加算データ型の勾配調整係数

  • SumWordLength — 加算データ型の語長 (ビット単位)

これらのプロパティの詳細は、fimath オブジェクト プロパティを参照してください。

numerictype プロパティ

fi オブジェクトを作成する場合、fi オブジェクトのプロパティとして numerictype オブジェクトも自動的に作成されます。

numerictypefi オブジェクト、Simulink® 信号またはモデル パラメーターのデータ型情報をすべて含んでいるオブジェクト

以下の numerictype プロパティは、推移性により、fi オブジェクトのプロパティでもあります。numerictype オブジェクトのプロパティは fi オブジェクトの作成後、読み取り専用になります。しかし、numerictype プロパティ用に指定した新しい値をもつ fi オブジェクトのコピーを作成することはできます。

  • Biasfi オブジェクトのバイアス

  • DataTypefi オブジェクトに関連付けられたデータ型のカテゴリ

  • DataTypeModefi オブジェクトのデータ型およびスケーリング モード

  • DataTypeOverridefipref のデータ型オーバーライド設定を fi オブジェクトに適用するデータ型オーバーライド。このプロパティは、グローバルな fipref のデータ型オーバーライド設定を無視する場合に便利です。このプロパティは、値が既定の Inherit である場合には表示されません。このプロパティが Off に設定されている場合、fi オブジェクトは numerictype データ型の設定を使用し、fipref 設定を無視します。

  • FixedExponentfi オブジェクトに関連付けられた固定小数点の指数

  • SlopeAdjustmentFactorfi オブジェクトに関連付けられた勾配調整

  • FractionLengthfi オブジェクトの格納整数値の小数部の長さ (ビット単位)

  • Scalingfi オブジェクトの固定小数点スケーリング モード

  • Signedfi オブジェクトが符号付きか符号なしか

  • Signednessfi オブジェクトが符号付きか符号なしか

    メモ

    numerictype オブジェクトは AutoSignedness をもつことができますが、fi オブジェクトはすべて Signed または Unsigned でなければなりません。Auto Signednessnumerictype オブジェクト使用して fi オブジェクトを作成する場合、fi オブジェクトの Signedness プロパティは自動的に既定の Signed になります。

  • Slopefi オブジェクトに関連付けられた勾配

  • WordLengthfi オブジェクトの格納整数値の語長 (ビット単位)

これらのプロパティの詳細は、numerictype オブジェクト プロパティを参照してください。

メモ:

fi オブジェクトの表示形式の詳細は、固定小数点データの表示を参照してください。

キャストの例は、fi オブジェクトのキャストを参照してください。

fi オブジェクトの作成

符号付き fi オブジェクトを、値 pi、語長 8 ビット、小数部の長さ 3 ビットで作成します。

a = fi(pi, 1, 8, 3) 
a =
 
    3.1250

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: 3

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 オブジェクトの作成

引数 f を省略すると、可能な最高精度を実現するよう、小数部の長さが自動的に設定されます。

 a = fi(pi, 1, 8) 

a =
 
    3.1563

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: 5

既定の語長および精度をもつ fi オブジェクトの作成

wf を省略すると、語長が自動的に 16 ビットに設定され、小数部の長さが可能な最高精度を実現するように設定されます。

a = fi(pi, 1) 
a =
 
    3.1416

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

double ではない値による fi オブジェクトの作成

既定のコンストラクターと double ではない入力値 v を使用して fi オブジェクトを作成する場合、コンストラクターは vnumerictype を維持します。

入力が組み込みの整数の場合、固定小数点の属性はその整数型の属性と一致します。

v = uint32(5);
a = fi(v)
a = 
     5

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Unsigned
            WordLength: 32
        FractionLength: 0

出力 afi オブジェクトで、入力 v の語長、小数部の長さ、符号の有無を使用します。

入力が 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

入力 v が logical の場合、出力 aDataTypeMode: Boolean をもちます。

v = true;
a =  fi(v)
a = 
   1

          DataTypeMode: Boolean

入力が single の場合、出力 aDataTypeMode: Single をもちます。

v = single(pi);
a =  fi(v)
a = 
    3.1416

          DataTypeMode: Single

小数部の長さが語長よりも長い fi オブジェクトの作成

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

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

RealWorldValue = StoredInteger * 2 ^ -FractionLength
RealWorldValue = 5 * 2 ^ -10 = 0.0049   

符号付き fi オブジェクトを、値 0.0048828125、語長 8 ビット、小数部の長さ 10 ビットで作成します。

a = fi(0.0048828125, true, 8, 10)
a = 
    0.0049

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: 10

a の格納整数値を取得します。

a.int
ans = int8
    5

格納整数値の 2 進数値を取得します。

a.bin
ans = 
'00000101'

小数部の長さが語長より 2 ビット長いため、格納された整数のバイナリ値は x.xx00000101 となります。ここで、x は暗黙的ゼロのプレースホルダーです。0.0000000101 (2 進数) は 0.0049 (10 進数) と同等です。

小数部の長さが負の fi オブジェクトの作成

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

語長が 8、小数部の長さが -2 で格納された整数値が 5 の符号付き値について考えます。次の実際値を計算できます。

RealWorldValue = StoredInteger * 2 ^ -FractionLength
RealWorldValue = 5 * 2 ^ 2 = 20   

符号付き fi オブジェクトを、値 20、語長 8 ビット、小数部の長さ -2 ビットで作成します。

a = fi(20, true, 8, -2)
a = 
    20

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: -2

a の格納整数値を取得します。

a.int
ans = int8
    5

格納整数値の 2 進数値を取得します。

a.bin
ans = 
'00000101'

小数部の長さが負であるため、格納された整数のバイナリ値は 00000101xx となります。ここで、x は暗黙的ゼロのプレースホルダーです。000000010100 (2 進数) は 20 (10 進数) と同等です。

丸めおよびオーバーフローを指定する fi オブジェクトの作成

オブジェクトを作成するとき、プロパティ名/プロパティ値のペアを使用して、丸め手法やオーバーフロー アクションなど、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

ローカル fimath の削除

関数 removefimath を使用して、いつでもローカル fimath オブジェクトを fi オブジェクトから削除できます。

a = fi(pi, 'RoundingMethod', 'Floor', 'OverflowAction', 'Wrap')
a = removefimath(a)
a =
    3.1415

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

        RoundingMethod: Floor
        OverflowAction: Wrap
           ProductMode: FullPrecision
               SumMode: FullPrecision

a =
    3.1415

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

これで、fi オブジェクト a にはローカル fimath が存在しなくなります。ローカル fimath オブジェクトを割り当て直すには、関数 setfimath を使用します。

a = setfimath(a, fimath('ProductMode', 'KeepLSB'))
a =
    3.1415

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

        RoundingMethod: Nearest
        OverflowAction: Saturate
           ProductMode: KeepLSB
     ProductWordLength: 32
               SumMode: FullPrecision

これで、fi オブジェクト a には、ProductModeKeepLSBfimath オブジェクトがあります。fimath オブジェクトの残りのプロパティの値は、既定の fimath 値になります。

インデックス引数としての fi の使用

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

x = 10:-1:1
x = 1×10

    10     9     8     7     6     5     4     3     2     1

fi オブジェクトを作成し、これを使用して x のインデックスを作成します。

k = fi(3);
y = x(k)
y = 8

switch ステートメントでの fi の使用

fi オブジェクトは switch 条件としても、switch 式内の 1 つ以上の case としても使用できます。

function y = test_switch(u, v)
   cExpr = fi(u + v, 0, 2, 0);
   t = 1;

   switch cExpr  % condition expression type: ufix2
      case 0    
         y = t * 2;
      case fi(1,0,2,0)
         y = t * 3;
      case 2
         y = t * 4;
      case 3
         y = t * 3;
      otherwise
         y = 0;
   end
end
y = test_switch(1,2.0)
y =
     3

fi のコロン演算子としての使用

fi オブジェクトをコロン演算子として使用します。

fi をコロン演算子として使用する場合は、すべてのコロン オペランドを整数値にしなければなりません。

a=fi(1,0,3,0);
b=fi(2,0,8,0);
c=fi(12,0,8,0);
x=a:b:c
x = 
     1     3     5     7     9    11

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

非整数間隔の固定小数点ベクトルの作成

非整数間隔の固定小数点ベクトルを作成するには、最初にベクトルを作成し、次にこのベクトルを固定小数点数にキャストします。

x = fi(0:0.1:10);

または、関数 linspace を使用します。

x = fi(linspace(0,10, 101));

次のコードでは、コロン オペランドの 1 つが整数でないため、エラーが生成されます。

a = fi(0);
b = fi(0.1);
c = fi(10);
z = a:b:c

For ループでの fi の使用

for ループのインデックスとして fi オブジェクトを使用します。

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

fi オブジェクトへのデータ型オーバーライドの設定

fi オブジェクトが fipref オブジェクトのデータ型オーバーライド設定を使用しないように、fi オブジェクトの DataTypeOverride プロパティを設定します。

後で復元するために現在の fipref 設定を保存します。

fp = fipref;
initialDTOSetting = fp.DataTypeOverride;

すべての数値型に対してデータ型オーバーライドが 'TrueDoubles' に設定されるように、fipref を設定します。

fipref('DataTypeOverride', 'TrueDoubles')
ans = 
                NumberDisplay: 'RealWorldValue'
           NumericTypeDisplay: 'full'
                FimathDisplay: 'full'
                  LoggingMode: 'Off'
             DataTypeOverride: 'TrueDoubles'
    DataTypeOverrideAppliesTo: 'AllNumericTypes'

DataTypeOverride プロパティを指定しないで新しい fi オブジェクトを作成します。こうすると、fipref を使用して指定されたデータ型オーバーライド設定が使用されるようになります。

x = fi(pi, 1, 16, 13)
x = 
    3.1416

          DataTypeMode: Double

今度は、fi オブジェクトを作成し、DataTypeOverride プロパティを 'Off' に設定します。こうすると、fipref を使用して指定されたデータ型オーバーライドの設定が無視されるようになります。

y = fi(pi, 1, 16, 13, 'DataTypeOverride','Off')
y = 
    3.1416

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

この例の開始時に保存した fipref 設定を復元します。

fp.DataTypeOverride = initialDTOSetting;

拡張機能

R2006a より前に導入