Main Content

quantizer

quantizer 객체 만들기

설명

quantizer 객체는 양자화에 사용할 데이터형 속성을 설명합니다. quantizer 객체를 생성한 후에는 quantize를 사용하여 배정밀도 데이터를 양자화할 수 있습니다. quantizer 객체를 사용하면 임의의 워드 길이와 지수 길이를 가진 사용자 지정 부동소수점 데이터형을 시뮬레이션할 수 있습니다.

생성

설명

q = quantizer는 속성이 디폴트 값으로 설정된 quantizer 객체를 생성합니다. 이 객체를 사용하여 값을 양자화하려면 quantize를 사용하십시오.

예제

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

[wordlength fractionlength]

Format 속성값을 요소를 2개 가진 행 벡터로 지정합니다. 여기서 첫 번째 요소는 quantizer 객체 워드 길이의 비트 수이고, 두 번째 요소는 quantizer 객체 소수부 길이의 비트 수입니다.

워드 길이는 2에서 PC 메모리 제한 길이 사이의 범위일 수 있습니다. 소수부 길이는 0에서 워드 길이보다 1 작은 값 사이의 범위일 수 있습니다.

float

[wordlength exponentlength]

Format 속성값을 요소를 2개 가진 행 벡터로 지정합니다. 여기서 첫 번째 요소는 quantizer 객체 워드 길이의 비트 수이고, 두 번째 요소는 quantizer 객체 지수 길이의 비트 수입니다.

워드 길이는 2에서 PC 메모리 제한 길이 사이의 범위일 수 있습니다. 소수부 길이는 0에서 11 사이의 범위일 수 있습니다.

double

[64 11]

읽기 전용 Format 속성값은 워드 길이와 지수 길이를 자동으로 지정합니다.

single

[32 8]

읽기 전용 Format 속성값은 워드 길이와 지수 길이를 자동으로 지정합니다.

데이터형: 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

객체 함수

quantizequantizer 객체를 사용한 숫자형 데이터 양자화
unitquantize+1을 기준으로 eps 범위 내의 숫자를 제외하고 quantizer 객체를 사용하여 숫자형 데이터 양자화
wordlengthquantizer 객체의 워드 길이

예제

모두 축소

디폴트 속성값을 사용하는 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]

maxnoverflows의 값을 가져옵니다.

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. 

maxnoverflows의 값을 확인합니다.

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.

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.

quantizer 객체의 읽기 전용 속성을 사용하여 더 많은 정보에 액세스할 수 있습니다.

q.noverflows
ans = 
0
q.nunderflows
ans = 
17

이 예제에서는 양자화 연산 중에 오버플로가 0번, 언더플로가 17번 발생했습니다.

버전 내역

R2006a 이전에 개발됨