Main Content

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

huffmandict

알려진 확률 모델을 사용하여 소스에 대한 허프만 코드 사전을 생성

설명

예제

[dict,avglen] = huffmandict(symbols,prob)는 최대 분산 알고리즘을 사용하여 소스 심볼 symbols에 대한 이진 허프만 코드 사전 dict를 생성합니다. 입력값 prob는 각 입력 심볼이 발생할 확률을 지정합니다. prob의 길이는 symbols의 길이와 같아야 합니다. 이 함수는 또한 입력값 prob의 확률에 따라 가중치가 적용된 평균 사전 코드워드 길이 avglen을 반환합니다.

예제

[dict,avglen] = huffmandict(symbols,prob,N)은 최대 분산 알고리즘을 사용하여 N진 허프만 코드 사전을 생성합니다. N은 소스 심볼 개수를 초과할 수 없습니다.

[dict,avglen] = huffmandict(symbols,prob,N,variance)는 지정된 분산을 갖는 N진 허프만 코드 사전을 생성합니다.

예제

모두 축소

이진 허프만 코드 사전을 생성하고, 평균 코드 길이를 추가로 반환합니다.

심볼 알파벳 벡터와 심볼 확률 벡터를 지정합니다.

symbols = (1:5); % Alphabet vector
prob = [.3 .3 .2 .1 .1]; % Symbol probability vector

이진 허프만 코드를 생성하고, 평균 코드 길이와 코드워드 사전이 포함된 셀형 배열을 표시합니다.

[dict,avglen] = huffmandict(symbols,prob)
dict=5×2 cell array
    {[1]}    {[  0 1]}
    {[2]}    {[  0 0]}
    {[3]}    {[  1 0]}
    {[4]}    {[1 1 1]}
    {[5]}    {[1 1 0]}

avglen = 2.2000

사전에서 다섯 번째 코드워드를 표시합니다.

samplecode = dict{5,2} % Codeword for fifth signal value
samplecode = 1×3

     1     1     0

허프만 코더 함수를 위한 코드 사전 생성기를 사용하여 이진 허프만 코드와 3진 허프만 코드를 생성합니다.

심볼 알파벳 벡터와 심볼 확률 벡터를 지정합니다.

symbols = (1:5); % Alphabet vector
prob = [.3 .3 .2 .1 .1]; % Symbol probability vector

이진 허프만 코드를 생성하고, 코드워드 사전이 포함된 셀형 배열을 표시합니다.

[dict,avglen] = huffmandict(symbols,prob);
dict(:,2) = cellfun(@num2str,dict(:,2),'UniformOutput',false)
dict=5×2 cell array
    {[1]}    {'0  1'   }
    {[2]}    {'0  0'   }
    {[3]}    {'1  0'   }
    {[4]}    {'1  1  1'}
    {[5]}    {'1  1  0'}

최소 분산을 갖는 3진 허프만 코드를 생성합니다.

[dict,avglen] = huffmandict(symbols,prob,3,'min');
dict(:,2) = cellfun(@num2str,dict(:,2),'UniformOutput',false)
dict=5×2 cell array
    {[1]}    {'2'   }
    {[2]}    {'1'   }
    {[3]}    {'0  0'}
    {[4]}    {'0  2'}
    {[5]}    {'0  1'}

입력 인수

모두 축소

소스 심볼로, 벡터, 셀형 배열 또는 영숫자 셀형 배열로 지정됩니다. symbols는 소스가 생성하는 고유한 신호 값을 나열합니다. symbols가 셀형 배열인 경우 1×S 또는 S×1 셀형 배열이어야 합니다. 여기서 S는 심볼 개수입니다.

데이터형: double | cell

각 심볼의 발생 확률로, [0, 1] 범위의 벡터로 지정됩니다. 이 벡터의 요소는 합이 1이어야 합니다. 이 벡터의 길이는 입력값 symbols의 길이와 같아야 합니다.

데이터형: double

N진 허프만 코드 사전으로, [2, 10] 범위의 스칼라로 지정됩니다. 이 값은 입력값 symbols의 길이보다 작거나 같아야 합니다.

데이터형: double

허프만 코드의 분산으로, 다음 값 중 하나로 지정됩니다.

  • 'min' — 최소 분산을 갖는 N진 허프만 코드 사전을 생성합니다. 분산 입력 인수를 지정하지 않은 경우 함수에서 이 값을 사용합니다.

  • 'max' — 최대 분산을 갖는 N진 허프만 코드 사전을 생성합니다.

데이터형: char

출력 인수

모두 축소

허프만 코드 사전으로, 2열 셀형 배열로 반환됩니다. 첫 번째 열에는 입력값 symbols의 고유한 신호 값이 나열됩니다. 두 번째 열은 허프만 코드워드에 대응됩니다. 여기서 각 허프만 코드워드는 행 벡터로 표현됩니다. 입력 인수 N을 지정한 경우 함수는 N진 허프만 코드 사전 dict를 반환합니다.

데이터형: double | cell

평균 코드워드 길이로, 입력값 prob의 확률에 따라 가중치가 적용되며 양의 스칼라로 반환됩니다.

데이터형: double

참고 문헌

[1] Sayood, Khalid. Introduction to Data Compression. 2nd ed. San Francisco: Morgan Kaufmann Publishers, 2000.

버전 내역

R2006a 이전에 개발됨

참고 항목

함수

도움말 항목