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 객체를 반환합니다.
는 하나 이상의 이름-값 쌍 인수로 지정된 속성값을 갖는 a = fi(___,Name,Value)fi 객체를 반환합니다.
입력 인수
fi 객체의 값으로, 스칼라, 벡터, 행렬 또는 다차원 배열로 지정됩니다.
반환된 fi 객체의 값은 fi 생성자에 지정된 데이터형으로 양자화된 입력 v의 값입니다. 입력값 v가 double형이 아니고 워드 길이나 소수부 길이를 지정하지 않았다면, 반환되는 fi 객체는 입력값의 numerictype을 유지합니다. 예제는 Double형이 아닌 값으로부터 fi 객체 만들기 항목을 참조하십시오.
fi 객체의 numerictype을 완전히 지정한 경우에만 non-finite 값인 -Inf, Inf, NaN을 값으로 지정할 수 있습니다. fi가 고정소수점 numerictype으로 지정된 경우 다음이 적용됩니다.
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 객체의 부호의 유무로, 숫자형 또는 논리값 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 객체는 다음 세 가지 유형의 속성을 갖습니다.
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
기울기 및 편향 스케일링된 숫자의 실제 값은 다음과 같이 표현됩니다.
.
기울기 및 편향 스케일링을 사용하는 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 객체의 속성이기도 합니다.
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
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 Constructor Does Not Follow globalfimath Rules 항목을 참조하십시오.
globalfimath를 재설정하여 디폴트 값을 복원합니다.
resetglobalfimath;
이 예제에서는 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, NaN을 fi에서 고정소수점 값으로 사용하려면 고정소수점 객체의 숫자형을 완전히 지정해야 합니다. 이러한 값에는 자동 최적 정밀도의 스케일링이 지원되지 않습니다.
오버플로 시 포화
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객체의 표시, 기록, 데이터형 재정의 기본 설정을 제어할 수 있습니다.
확장 기능
사용법 관련 참고 및 제한 사항:
입력 인수가 없는 디폴트 생성자 구문은 지원되지 않습니다.
numerictype이 완전히 지정되지 않은 경우fi에 대한 입력값은 상수,fi, single형 또는 내장 정수 값이어야 합니다. 입력값이 내장 double형 값인 경우에는 상수여야 합니다. 이러한 제한 사항이 있기 때문에fi는 입력값의 알려진 데이터형을 기반으로 소수부 길이를 자동 스케일링할 수 있습니다.코드를 생성하려면 데이터형과 관련된 모든 속성은 상수여야 합니다.
고정소수점이 아닌 Simulink® 입력값인 경우
numerictype객체 정보가 제공되어야 합니다.
HDL 코드 생성
HDL Coder™를 사용하여 FPGA 및 ASIC 설계를 위한 VHDL, Verilog 및 SystemVerilog 코드를 생성할 수 있습니다.
버전 내역
R2006a 이전에 개발됨이전 릴리스에서는 fi, fimath, numerictype 객체의 부정확한 속성 이름을 사용할 경우 경고가 발생합니다. R2021a에서는 부정확한 속성 이름에 대한 지원이 제거되었습니다. 대신 정확한 속성 이름을 사용하십시오.
이전 릴리스에서는 non-finite 입력값 -Inf, Inf 또는 NaN이 전달되는 경우 fi가 오류를 반환합니다. 이제 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.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 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)