2014-10-06 4 views
0

MATLAB에 허프만 코드를 저장하는 가장 좋은 방법은 무엇입니까? 예를 들어 :matlab에 낮은 볼륨으로 하프만 코드를 저장하는 방법은 무엇입니까?

 letters = [1:6]; % Distinct symbols the data source can produce 
     p = [.5 .125 .125 .125 .0625 .0625]; % Probability distribution 

     [dict,avglen] = huffmandict(letters,p); % Get Huffman code. 
     sig = randsrc(1,20,[letters; p]) % Create data using p. 
     comp = huffmanenco(sig,dict) % Encode the data. 

-> save('file.mat','comp','dict'); 
-> clear all; 
-> load('file.mat'); 

     deco = huffmandeco(comp,dict) % Decode the encoded signal. 

그러나 저장 기능은 낮은 볼륨에 데이터를 저장하지 않습니다. dlmwrite 기능을 사용했지만 저장된 볼륨이 높습니다. JPEG 이미지의 허프만 코드와 같은 다른 기술에서 저장 방법은 어떻게됩니까? 아시다시피, 허프만 코드는 JPEG 이미지 압축에 사용됩니다. [imwrite (mat, 'mat.jpeg')]의 허프만 코드가 디스크에 저장되는 방법은 무엇입니까?

답변

1

몇 가지. 먼저, 더 큰 데이터 양을 만들어보십시오. 20은 차이를보기 위해 매우 낮은 숫자입니다 (그러나 당신은 그것을 볼 것입니다).

그런 다음 문제는 데이터 형식입니다. comp이라는 변수를 보면, 0과 1 만 포함하는 허프만 인코딩의 결과가 바이너리입니다. 그러나, matlab에, 당신은 1 비트를 설명하기 위해 32 비트를 사용하여, 따라서 그것을 더블로 저장됩니다.

시도, 저장하기 전에,이 :

comp=logical(comp); 

그것은 트릭을 할해야한다)

+0

나는 JPEG 영상 압축 방법을 저장 찾을 수 있습니다 thank.How. – omid

+0

mm 제발, 당신은 그 질문을 다시 만들 수 있습니까? 나는 그것을 이해하지 못한다. 미안하다. 그냥 저장하는 거니? 그럼 코드에서 더 이상 아무것도 변경하지 말아야합니다. 단지 comp 변수를 논리로 변환하면 메모리를 절약 할 수 있습니다 (저장된 아카이브에는 헤더가 커지므로 큰 차이를 보일 수 있습니다. sig of 500x500 정도) –