quantizer
quantizer
객체 만들기
설명
quantizer
객체는 양자화에 사용할 데이터형 속성을 설명합니다. quantizer
객체를 생성한 후에는 quantize
를 사용하여 배정밀도 데이터를 양자화할 수 있습니다. quantizer
객체를 사용하면 임의의 워드 길이와 지수 길이를 가진 사용자 지정 부동소수점 데이터형을 시뮬레이션할 수 있습니다.
생성
구문
설명
는 이름-값 인수를 사용하여 명명된 속성을 설정합니다. 여러 개의 이름-값 인수를 지정할 수 있습니다. 각 속성 이름은 작은따옴표로 묶으십시오.q
= quantizer(Name,Value
)
는 속성값을 사용하여 속성을 설정합니다. 속성값은 고유하며 따라서 명령에 속성값만 지정해서 속성 이름을 설정할 수 있습니다. 두 값이 충돌할 경우 q
= quantizer(Value1,Value2
)quantizer
는 목록의 마지막 속성값을 설정합니다.
는 구조체 q
= quantizer(s
)s
의 각 필드 이름에 명명된 속성을 이 구조체에 들어 있는 값으로 설정합니다.
는 문자형 벡터 q
= quantizer(pn,pv
)pn
의 셀형 배열에 명명된 속성을 셀형 배열 pv
의 대응하는 값으로 설정합니다.
quantizer
객체를 생성할 때 이름-값 문자열 인수, 구조체, 이름-값 셀형 배열 인수를 함께 조합해서 속성값을 설정할 수 있습니다.
속성
DataMode
— 데이터형 모드
'fixed'
(디폴트 값) | 'ufixed'
| 'float'
| 'single'
| 'double'
양자화에 사용되는 데이터형 모드로, 다음 값 중 하나로 지정됩니다.
'fixed'
— 부호 있는 고정소수점 모드.'ufixed'
— 부호 없는 고정소수점 모드.'float'
— 사용자 지정된 정밀도의 부동소수점 모드.'single'
— 단정밀도 모드. 이 모드는 다른 모든 속성 설정을 재정의합니다.'double'
— 배정밀도 모드. 이 모드는 다른 모든 속성 설정을 재정의합니다.
데이터형: char
| struct
| cell
RoundMode
— 사용할 반올림 방법
'floor'
(디폴트 값) | 'ceil'
| 'convergent'
| 'fix'
| 'nearest'
| 'round'
사용할 반올림 방법으로, 다음 값 중 하나로 지정됩니다.
'ceil'
— 허용되는 다음 양자화된 값으로 올림합니다.'convergent'
— 허용되는 가장 가까운 양자화된 값으로 반올림합니다. 허용되는 가장 가까운 양자화된 두 값 사이의 가운데 숫자인 경우에는 반올림했을 때 최하위 비트가 0으로 설정되는 경우에만 올림합니다.'fix'
— 음수는 허용되는 다음 양자화된 값으로 올림하고, 양수는 허용되는 다음 양자화된 값으로 내림합니다.'floor'
— 허용되는 다음 양자화된 값으로 내림합니다.'nearest'
— 허용되는 가장 가까운 양자화된 값으로 반올림합니다. 허용되는 가장 가까운 양자화된 두 값 사이의 가운데 숫자인 경우에는 올림합니다.'round'
— 허용되는 가장 가까운 양자화된 값으로 반올림합니다. 허용되는 가장 가까운 양자화된 두 값 사이의 가운데 숫자인 경우에는 절댓값을 올림합니다.
데이터형: char
| struct
| cell
OverflowMode
— 오버플로인 경우 수행할 동작
'saturate'
(디폴트 값) | 'wrap'
오버플로인 경우 수행할 동작으로, 다음 값 중 하나로 지정됩니다.
'saturate'
— 오버플로 시 포화됩니다.양자화할 데이터 값이 데이터 형식 속성에 따라 표현 가능한 최대 숫자 및 최소 숫자의 범위를 벗어나는 경우, 표현 가능한 최댓값과 최솟값 둘 중에서 더 가까운 값으로 양자화됩니다.
'wrap'
— 오버플로 시 표현 가능한 값의 범위로 래핑됩니다.양자화할 데이터 값이 데이터 형식 속성에 따라 표현 가능한 최대 숫자 및 최소 숫자의 범위를 벗어나는 경우, 표현 가능한 최소 숫자를 기준으로 모듈러 산술 연산을 사용하여 원래 범위로 래핑됩니다.
이 속성은 고정소수점 데이터형 모드에만 적용됩니다. DataMode
속성을 float
, double
또는 single
로 설정하면 이 속성은 읽기 전용 속성이 됩니다.
참고
동적 범위를 벗어나는 부동소수점 숫자는 ±Inf
로 오버플로됩니다.
데이터형: char
| struct
| cell
Format
— quantizer
객체의 데이터 형식
[16 15]
(디폴트 값) | [wordlength fractionlength]
| [wordlength exponentlength]
| [64 11]
| [32 8]
quantizer
객체의 데이터 형식. 이 속성값에 대한 해석은 DataMode
속성의 값에 따라 다릅니다.
DataMode 속성값 | Format 속성값 해석 |
---|---|
fixed 또는 ufixed |
워드 길이는 2에서 PC 메모리 제한 길이 사이의 범위일 수 있습니다. 소수부 길이는 0에서 워드 길이보다 1 작은 값 사이의 범위일 수 있습니다. |
float |
워드 길이는 2에서 PC 메모리 제한 길이 사이의 범위일 수 있습니다. 소수부 길이는 0에서 11 사이의 범위일 수 있습니다. |
double |
읽기 전용 |
single |
읽기 전용 |
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
읽기 전용 quantizer
객체 상태
읽기 전용 quantizer
객체 상태는 quantize
가 호출될 때 업데이트됩니다. 이러한 상태를 재설정하려면 reset
을 사용하십시오.
max
— 양자화하기 전의 최댓값
스칼라
quantizer
객체 q
에 대해 quantize(q,…)
를 호출하는 동안, 양자화하기 전의 최댓값입니다. 이 값은 quantize
가 연속 호출되는 동안 기록되는 최댓값입니다.
예: max(q)
예: q.max
min
— 양자화하기 전의 최솟값
스칼라
quantizer
객체 q
에 대해 quantize(q,…)
를 호출하는 동안, 양자화하기 전의 최솟값입니다. 이 값은 quantize
가 연속 호출되는 동안 기록되는 최솟값입니다.
예: min(q)
예: q.min
noverflows
— 오버플로 수
스칼라
quantizer
객체 q
에 대해 quantize(q,…)
를 호출하는 동안 발생한 오버플로 수입니다. 이 값은 quantize
를 연속 호출하는 동안 누적됩니다. 오버플로는 양자화된 값이 q
의 범위를 벗어날 때의 값으로 정의됩니다.
예: noverflows(q)
예: q.noverflows
nunderflows
— 언더플로 수
스칼라
quantizer
객체 q
에 대해 quantize(q,…)
를 호출하는 동안 발생한 언더플로 수입니다. 이 값은 quantize
를 연속 호출하는 동안 누적됩니다. 언더플로는 양자화 전에는 0이 아닌데 양자화 후에는 0이 되는 숫자로 정의됩니다.
예: nunderflows(q)
예: q.nunderflows
noperations
— 양자화된 데이터 점 개수
스칼라
quantizer
객체 q
에 대해 quantize(q,…)
를 호출하는 동안 수행된 양자화 연산의 수. 이 값은 quantize
를 연속 호출하는 동안 누적됩니다.
예: noperations(q)
예: q.noperations
객체 함수
quantize | quantizer 객체를 사용한 숫자형 데이터 양자화 |
unitquantize | +1 을 기준으로 eps 범위 내의 숫자를 제외하고 quantizer 객체를 사용하여 숫자형 데이터 양자화 |
wordlength | quantizer 객체의 워드 길이 |
예제
quantizer
객체 만들기
디폴트 속성값을 사용하는 quantizer
객체를 만듭니다.
q = quantizer
q = DataMode = fixed RoundMode = floor OverflowMode = saturate Format = [16 15]
quantizer
객체를 복사하기 위해 대입식을 사용합니다.
q = quantizer; r = q; isequal(q,r)
ans = logical
1
속성 이름-값 인수를 사용하여 quantizer
객체 속성을 설정합니다.
q = quantizer('Mode','fixed','RoundMode','ceil',... 'OverflowMode','saturate','Format',[5 4])
q = DataMode = fixed RoundMode = ceil OverflowMode = saturate Format = [5 4]
명령에 속성값만 나열하여 quantizer
객체 속성을 설정합니다.
q = quantizer('fixed','ceil','saturate',[5 4])
q = DataMode = fixed RoundMode = ceil OverflowMode = saturate Format = [5 4]
구조체를 사용하여 quantizer
객체 속성을 설정합니다.
struct.DataMode = 'fixed'; struct.RoundMode = 'ceil'; struct.OverflowMode = 'saturate'; struct.Format = [5 4]; q = quantizer(struct)
q = DataMode = fixed RoundMode = ceil OverflowMode = saturate Format = [5 4]
속성 이름과 속성값 셀형 배열을 사용하여 quantizer
객체 속성을 설정합니다.
pn = {'Mode','RoundMode','Overflowmode','Format'}; pv = {'fixed','ceil','saturate',[5 4]}; q = quantizer(pn,pv)
q = DataMode = fixed RoundMode = ceil OverflowMode = saturate Format = [5 4]
quantizer
객체로 데이터 양자화하기
quantize
를 사용하여 데이터를 양자화하고, 양자화가 quantizer
객체 상태에 어떠한 영향을 주는지 알아보고,reset
을 사용하여 quantizer
객체 상태를 디폴트 값으로 초기화합니다.
예제 데이터 세트를 생성하고, quantizer
객체를 만들어 데이터 세트를 양자화할 때 사용할 양자화 파라미터를 지정합니다.
format long g rng(0,'twister'); x = rng(100); q = quantizer([16,14])
q = DataMode = fixed RoundMode = floor OverflowMode = saturate Format = [16 14]
max
및 noverflows
의 값을 가져옵니다.
q.max q.noverflows
ans = -1.79769313486232e+308 ans = 0
max
가 -realmax
와 같으며, 이는 quantizer q
가 재설정(reset) 상태임을 나타냅니다.
quantize
함수와 quantizer
객체의 사양을 사용하여 데이터 세트를 양자화합니다.
y = quantize(q,x);
Warning: 625 overflow(s) occurred in the fi quantize operation.
max
및 noverflows
의 값을 확인합니다.
q.max q.noverflows
ans = 1.99993896484375 ans = 625
기록된 최댓값이 양자화 후의 값인 q.max == max(y)
임을 확인할 수 있습니다.
quantizer
상태를 재설정하고 확인합니다.
reset(q) q.maxlog q.noverflows
ans = -1.79769313486232e+308 ans = 0
quantizer
객체를 사용하여 데이터 양자화하기
이 예제에서는 quantizer
객체에 의해 지정된 속성을 사용하여 데이터를 양자화하는 방법을 보여줍니다.
먼저 양자화할 데이터를 만듭니다.
x = linspace(-15,15,1000);
사용자 지정한 정밀도 부동소수점으로 양자화하기
워드 길이 6비트, 지수 길이 4비트로 사용자 지정된 정밀도의 부동소수점 데이터 모드로 quantizer
객체를 생성합니다.
q = quantizer('DataMode','float','Format',[6 4])
q = DataMode = float RoundMode = floor Format = [6 4]
RoundMode
속성은 'Floor'
의 디폴트 설정을 사용합니다.
quantize
함수와 quantizer
객체에 지정된 속성을 사용하여 x
의 데이터를 양자화합니다.
y = quantize(q,x);
x
에 대해 y
를 플로팅하여 해당 양자화 속성이 이 데이터에 미치는 영향을 시각화합니다.
plot(x,x,x,y); title(tostring(q)); legend('Input Data','Quantized Data','Location','northwest');
quantizer
객체의 읽기 전용 속성을 사용하여 더 많은 정보에 액세스할 수 있습니다.
q.noverflows
ans = 0
q.nunderflows
ans = 0
이 예제에서는 양자화 연산 중에 오버플로와 언더플로가 각각 0번 발생했습니다.
고정소수점으로 양자화하기
워드 길이가 6비트, 소수부 길이가 1비트이고 오버플로 시 래핑하도록 지정된 부호 있는 고정소수점 데이터 모드로 quantizer
객체를 생성합니다.
q = quantizer([6 1],'wrap')
q = DataMode = fixed RoundMode = floor OverflowMode = wrap Format = [6 1]
quantizer
는 디폴트 DataMode
속성 'fixed'
와 디폴트 RoundMode
속성 'Floor'
를 사용합니다.
quantize
함수와 quantizer
객체에 지정된 속성을 사용하여 x
의 데이터를 양자화합니다.
y = quantize(q,x);
x
에 대해 y
를 플로팅하여 해당 양자화 속성이 이 데이터에 미치는 영향을 시각화합니다.
plot(x,x,x,y); title(tostring(q)); legend('Input Data','Quantized Data','Location','northwest');
quantizer
객체의 읽기 전용 속성을 사용하여 더 많은 정보에 액세스할 수 있습니다.
q.noverflows
ans = 0
q.nunderflows
ans = 17
이 예제에서는 양자화 연산 중에 오버플로가 0번, 언더플로가 17번 발생했습니다.
버전 내역
R2006a 이전에 개발됨
참고 항목
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)