주요 콘텐츠

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

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 이전에 개발됨