Main Content

quantiz

양자화 인덱스와 양자화된 출력값 생성

설명

index = quantiz(sig,partition)은 입력값 partition에 지정된 스칼라 양자화 분할을 사용하여 입력 신호 sig의 양자화 수준을 반환합니다.

예제

[index,quants] = quantiz(sig,partition,codebook)은 스칼라 양자화의 각 분할에 대한 값을 규정하는 codebook을 지정합니다. codebook은 벡터이며 길이가 partition 길이보다 1만큼 더 커야 합니다. 이 함수는 또한 sig의 스칼라 양자화가 포함된 quants를 반환합니다. 이 값은 양자화 수준과 코드북에 규정된 값에 따라 달라집니다.

예제

[index,quants,distor] = quantiz(sig,partition,codebook)은 양자화 데이터의 평균제곱 왜곡의 추정값을 반환합니다.

예제

모두 축소

샘플 데이터를 생성합니다.

samp = [-2.4, -1, -0.2, 0, 0.2, 1, 1.2, 2, 2.9, 3, 3.5, 5]
samp = 1×12

   -2.4000   -1.0000   -0.2000         0    0.2000    1.0000    1.2000    2.0000    2.9000    3.0000    3.5000    5.0000

양자화 분할을 만듭니다. 분할을 지정하기 위해 값들로 구성된 각각 다른 범위의 고유한 끝점을 나열하십시오.

partition = [0, 1, 3];

코드북 값을 지정합니다.

codebook = [-1, 0.5, 2, 3]; % Codebook length must be equal to the number of partition intervals

샘플링된 데이터에 대해 양자화를 수행합니다. 입력 데이터의 양자화 인덱스와 그에 대응하는 양자화된 출력값을 표시합니다.

[index,quantized] = quantiz(samp,partition,codebook)
index = 1×12

     0     0     0     0     1     1     2     2     2     2     3     3

quantized = 1×12

   -1.0000   -1.0000   -1.0000   -1.0000    0.5000    0.5000    2.0000    2.0000    2.0000    2.0000    3.0000    3.0000

샘플링된 사인파를 생성합니다.

t = [0:.1:2*pi];
sig = sin(t);

양자화 분할을 만듭니다. 분할을 지정하기 위해 값들로 구성된 각각 다른 범위의 고유한 끝점을 나열하십시오.

partition = [-1:.2:1];

코드북 값을 지정합니다.

codebook = [-1.2:.2:1]; % Codebook length must be equal to the number of partition intervals

샘플링된 사인파에 대해 양자화를 수행합니다.

[index,quants] = quantiz(sig,partition,codebook);

양자화된 사인파와 샘플링된 사인파를 플로팅합니다.

plot(t,sig,'x',t,quants,'.')
title('Quantization of sine wave')
xlabel('Time')
ylabel('Amplitude')
legend('Original sampled sine wave','Quantized sine wave');
axis([-.2 7 -1.2 1.2])

Figure contains an axes object. The axes object with title Quantization of sine wave, xlabel Time, ylabel Amplitude contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent Original sampled sine wave, Quantized sine wave.

입력 인수

모두 축소

입력 신호로, 벡터로 지정됩니다. 이 입력값은 이 함수가 양자화를 수행할 샘플링된 신호를 지정합니다.

데이터형: double

각기 다른 범위의 고유한 끝점으로, 행 벡터로 지정됩니다. 이 입력값은 실수 집합 내에서 여러 개의 연속적이고 중첩되지 않는 값들의 범위를 정의합니다. 이 입력에 있는 값은 순오름차순이어야 합니다. 이 벡터의 길이는 분할 구간 수보다 1만큼 작아야 합니다.

예: [0, 1, 3]은 입력 행 벡터를 {X: X ≤ 0}, {X: 0 < X ≤ 1}, {X: 1 < X ≤ 3}, {X: 3 < X}의 4개 세트로 분할합니다.

데이터형: double

각 분할의 양자화 값으로, 행 벡터로 지정됩니다. 이 입력값은 스칼라 양자화의 각 분할에 공통된 값을 규정합니다. 이 벡터의 길이는 분할 구간 수와 같아야 합니다. 즉, 이 벡터의 길이는 partition 입력의 길이보다 1만큼 더 커야 합니다.

데이터형: double

출력 인수

모두 축소

입력 신호의 양자화 인덱스로, 음이 아닌 행 벡터로 반환됩니다. 이 출력값은 각 입력값이 어느 분할 구간에 매핑되는지 결정합니다. index의 각 요소는 [0, N–1] 범위에 있는 N개 정수 중 하나입니다.

partition 입력의 길이가 N인 경우 index는 K번째 요소가 다음과 같은 벡터입니다.

  • sig(K) ≤ partition(1)인 경우 0

  • partition(M) < sig(K) ≤ partition(M+1)인 경우 M

  • partition(N) ≤ sig(K)인 경우 N

양자화기의 출력값으로, 입력 신호의 양자화 값을 포함하며 행 벡터로 반환됩니다. quants의 크기는 입력 인수 sig의 크기와 일치합니다. codebook이 입력 인수로 지정되지 않은 경우 코드북 값을 벡터로 정의할 수 있으며 이때 그 길이는 partition의 길이보다 1만큼 더 커야 합니다.

quantscodebookindex 입력값을 기반으로 계산되며 quants(i) = codebook(index(i) + 1)로 지정됩니다. 여기서 i는 1과 sig 길이 사이의 정수입니다.

양자화된 신호의 평균제곱 왜곡으로, 양의 스칼라로 반환됩니다. 적절한 분할과 코드북 값을 선택하여 이러한 왜곡을 줄일 수 있습니다. 분할 및 코드북 값을 최적화하는 방법에 대한 자세한 내용은 lloyds 함수를 참조하십시오.

버전 내역

R2006a 이전에 개발됨

참고 항목

함수