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, 워드 길이 w를 갖는 fi 객체를 반환합니다.

예제

a = fi(v,s,w,f)는 값 v, 부호의 유무 s, 워드 길이 w, 소수부 길이 f를 갖는 fi 객체를 반환합니다.

예제

a = fi(v,s,w,slope,bias)는 값 v, 부호의 유무 s, slope, bias를 갖는 fi 객체를 반환합니다.

예제

a = fi(v,s,w,slopeadjustmentfactor,fixedexponent,bias)는 값 v, 부호의 유무 s, slopeadjustmentfactor, fixedexponent, bias를 갖는 fi 객체를 반환합니다.

예제

a = fi(v,T)는 값 vnumerictype T를 갖는 fi 객체를 반환합니다.

예제

a = fi(___,F)fimath F를 갖는 fi 객체를 반환합니다.

예제

a = fi(___,Name,Value)는 하나 이상의 이름-값 쌍 인수로 지정된 속성값을 갖는 fi 객체를 반환합니다.

입력 인수

모두 확장

fi 객체의 값으로, 스칼라, 벡터, 행렬 또는 다차원 배열로 지정됩니다.

반환된 fi 객체의 값은 fi 생성자에 지정된 데이터형으로 양자화된 입력 v의 값입니다. 입력값 v가 double형이 아니고 워드 길이나 소수부 길이를 지정하지 않았다면, 반환되는 fi 객체는 입력값의 numerictype을 유지합니다. 예제는 double형이 아닌 값으로부터 fi 객체 만들기 항목을 참조하십시오.

fi 객체의 numerictype을 완전히 지정한 경우에만 유한하지 않은 값인 -Inf, Inf, NaN을 값으로 지정할 수 있습니다. fi가 고정소수점 numerictype으로 지정된 경우 다음이 적용됩니다.

  • NaN0에 매핑됩니다.

  • fi 객체의 'OverflowAction' 속성이 'Wrap'으로 설정되면 -InfInf0에 매핑됩니다.

  • fi 객체의 'OverflowAction' 속성이 'Saturate'로 설정되면, Inf는 표현 가능한 가장 큰 값에 매핑되고 -Inf는 표현 가능한 가장 작은 값에 매핑됩니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | fi

fi 객체의 부호의 유무로, 숫자형 또는 논리값 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 객체는 다음 세 가지 유형의 속성을 갖습니다.

fi 객체를 만들 때 이러한 속성을 설정할 수 있습니다. fi 객체의 데이터에 액세스할 때 이 데이터 속성을 사용하십시오. fimath 속성과 numerictype 속성은 추이적 관계(transitivity)에 따라 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 객체를 만들려면 생성자에서 워드 길이 다음에 slopebias 인수를 포함시킵니다. 예를 들어 기울기가 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 객체의 속성이기도 합니다.

fi 생성자에 numerictype 객체를 지정하여, 기존 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

논리형으로부터 fi 객체 만들기

입력값이 논리형이면 출력 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

RoundingMethodOverflowAction 속성은 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 설정을 사용하여 fi 객체를 double형, single형 또는 스케일링된 double형으로 재정의하는 방법을 보여줍니다. 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, NaNfi에서 고정소수점 값으로 사용하려면 고정소수점 객체의 숫자형을 완전히 지정해야 합니다. 이러한 값에는 자동 최적 정밀도의 스케일링이 지원되지 않습니다.

오버플로 시 포화

fi 객체의 숫자형이 오버플로 시 포화로 지정되면, Inf는 지정된 숫자형의 표현 가능한 가장 큰 값에 매핑되고 -Inf는 표현 가능한 가장 작은 값에 매핑됩니다. NaN은 0에 매핑됩니다.

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은 0에 매핑됩니다.

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

  • fipref 객체를 사용하여 fi 객체의 표시, 기록, 데이터형 재정의 기본 설정을 제어할 수 있습니다.

확장 기능

HDL 코드 생성
HDL Coder™를 사용하여 FPGA 및 ASIC 설계를 위한 VHDL, Verilog 및 SystemVerilog 코드를 생성할 수 있습니다.

버전 내역

R2006a 이전에 개발됨

모두 확장