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 객체를 생성할 때 이름-값 문자열 인수, 구조체, 이름-값 셀형 배열 인수를 함께 조합해서 속성값을 설정할 수 있습니다.
속성
양자화에 사용되는 데이터형 모드로, 다음 값 중 하나로 지정됩니다.
'fixed'— 부호 있는 고정소수점 모드.'ufixed'— 부호 없는 고정소수점 모드.'float'— 사용자 지정된 정밀도의 부동소수점 모드.'single'— 단정밀도 모드. 이 모드는 다른 모든 속성 설정을 재정의합니다.'double'— 배정밀도 모드. 이 모드는 다른 모든 속성 설정을 재정의합니다.
데이터형: char | struct | cell
사용할 반올림 방법으로, 다음 값 중 하나로 지정됩니다.
'ceil'— 허용되는 다음 양자화된 값으로 올림합니다.'convergent'— 허용되는 가장 가까운 양자화된 값으로 반올림합니다. 허용되는 가장 가까운 양자화된 두 값 사이의 가운데 숫자인 경우에는 반올림했을 때 최하위 비트가 0으로 설정되는 경우에만 올림합니다.'fix'— 음수는 허용되는 다음 양자화된 값으로 올림하고, 양수는 허용되는 다음 양자화된 값으로 내림합니다.'floor'— 허용되는 다음 양자화된 값으로 내림합니다.'nearest'— 허용되는 가장 가까운 양자화된 값으로 반올림합니다. 허용되는 가장 가까운 양자화된 두 값 사이의 가운데 숫자인 경우에는 올림합니다.'round'— 허용되는 가장 가까운 양자화된 값으로 반올림합니다. 허용되는 가장 가까운 양자화된 두 값 사이의 가운데 숫자인 경우에는 절댓값을 올림합니다.
데이터형: char | struct | cell
오버플로인 경우 수행할 동작으로, 다음 값 중 하나로 지정됩니다.
'saturate'— 오버플로 시 포화됩니다.양자화할 데이터 값이 데이터 형식 속성에 따라 표현 가능한 최대 숫자 및 최소 숫자의 범위를 벗어나는 경우, 표현 가능한 최댓값과 최솟값 둘 중에서 더 가까운 값으로 양자화됩니다.
'wrap'— 오버플로 시 표현 가능한 값의 범위로 래핑됩니다.양자화할 데이터 값이 데이터 형식 속성에 따라 표현 가능한 최대 숫자 및 최소 숫자의 범위를 벗어나는 경우, 표현 가능한 최소 숫자를 기준으로 모듈러 산술 연산을 사용하여 원래 범위로 래핑됩니다.
이 속성은 고정소수점 데이터형 모드에만 적용됩니다. DataMode 속성을 float, double 또는 single로 설정하면 이 속성은 읽기 전용 속성이 됩니다.
참고
동적 범위를 벗어나는 부동소수점 숫자는 ±Inf로 오버플로됩니다.
데이터형: char | struct | cell
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을 사용하십시오.
quantizer 객체 q에 대해 quantize(q,…)를 호출하는 동안, 양자화하기 전의 최댓값입니다. 이 값은 quantize가 연속 호출되는 동안 기록되는 최댓값입니다.
예: max(q)
예: q.max
quantizer 객체 q에 대해 quantize(q,…)를 호출하는 동안, 양자화하기 전의 최솟값입니다. 이 값은 quantize가 연속 호출되는 동안 기록되는 최솟값입니다.
예: min(q)
예: q.min
quantizer 객체 q에 대해 quantize(q,…)를 호출하는 동안 발생한 오버플로 수입니다. 이 값은 quantize를 연속 호출하는 동안 누적됩니다. 오버플로는 양자화된 값이 q의 범위를 벗어날 때의 값으로 정의됩니다.
예: noverflows(q)
예: q.noverflows
quantizer 객체 q에 대해 quantize(q,…)를 호출하는 동안 발생한 언더플로 수입니다. 이 값은 quantize를 연속 호출하는 동안 누적됩니다. 언더플로는 양자화 전에는 0이 아닌데 양자화 후에는 0이 되는 숫자로 정의됩니다.
예: nunderflows(q)
예: q.nunderflows
quantizer 객체 q에 대해 quantize(q,…)를 호출하는 동안 수행된 양자화 연산의 수. 이 값은 quantize를 연속 호출하는 동안 누적됩니다.
예: noperations(q)
예: q.noperations
객체 함수
quantize | quantizer 객체를 사용한 숫자형 데이터 양자화 |
unitquantize | +1을 기준으로 eps 범위 내의 숫자를 제외하고 quantizer 객체를 사용하여 숫자형 데이터 양자화 |
wordlength | 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]
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 =
0max가 -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 객체에 의해 지정된 속성을 사용하여 데이터를 양자화하는 방법을 보여줍니다.
먼저 양자화할 데이터를 만듭니다.
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');
![Figure contains an axes object. The axes object with title quantizer('float', 'floor', [6 4]) contains 2 objects of type line. These objects represent Input Data, Quantized Data.](../../examples/fixedpoint/win64/QuantizeDataUsingTheQuantizerObjectExample_01.png)
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');
![Figure contains an axes object. The axes object with title quantizer('fixed', 'floor', 'wrap', [6 1]) contains 2 objects of type line. These objects represent Input Data, Quantized Data.](../../examples/fixedpoint/win64/QuantizeDataUsingTheQuantizerObjectExample_02.png)
quantizer 객체의 읽기 전용 속성을 사용하여 더 많은 정보에 액세스할 수 있습니다.
q.noverflows
ans = 0
q.nunderflows
ans = 17
이 예제에서는 양자화 연산 중에 오버플로가 0번, 언더플로가 17번 발생했습니다.
버전 내역
R2006a 이전에 개발됨이제 quantize 함수에 quantizer 객체를 사용하여 숫자형 데이터를 양자화할 경우 int64형과 uint64형이 지원됩니다.
예를 들면 다음과 같습니다.
q = quantizer('fixed','floor','saturate',[64 11]) x = int64(pi) y = quantize(q,x)
q =
DataMode = fixed
RoundMode = floor
OverflowMode = saturate
Format = [64 11]
x =
int64
3
y =
3참고 항목
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)