간단 한 프로그램 도구: matlab 향 농 인 코딩 실현

인터넷 에서 기 존 코드 를 찾 아 시간 을 아 끼 려 고 했 는데 마지막 으로 코드 를 많이 봤 어 요.
향 농 코딩 의 규칙 은 매우 간단 합 니 다. matlab 로 실현 하 는 것 도 매우 간단 합 니 다. 숙제 를 할 때의 계산기 라 고 생각 합 니 다.
코드 는 다음 과 같 습 니 다:
보조 함수:
function y = dectobin(num,L)
%                 
%num         
%L            
i = 0;
bin = zeros(1,L);
for k = 1:L
i = i+1;
num = num * 2;%        , 2  
    if num >= 1%     
        bin(i) = 1;%      1
        num = num - 1;
    else
       bin(i) = 0;  %  ,      0
    end
    if(i >= L)%      
        break;
    end
end
y = bin;

주 함수:
function [ s_code,ave_L ] = Shannon_code( p )
%    
%p          (              )
%s_code      
%ave_L     
px = sort(p,'descend');%     
N = length(px);%        
ave_L = 0;
s_code={};
for i = 1:N
    %     
    p_sum = 0;  
    if (i==1)
        p_sum=0;
    else
    for k = 1:i-1
        p_sum = p_sum + px(k);
    end
    end
    %   
    if (i == 1)
        L = ceil(-log2(px(i)));  %    
        y = zeros(1,L); % 0
        
    else
        L = ceil(-log2(px(i)));%L   
        y = dectobin(p_sum,L);%           ,  L 
    end
     %     
    ave_L = ave_L + px(i) * L; 
    s_code{i}=y;
end  

완성 ~
이 프로그램 은 정말 간단 합 니 다. 최근 에는 하 프 만 인 코딩 matlab 를 임의로 만 드 는 프로그램 에 대한 생각 을 담 은 글 을 써 야 합 니 다!힘 들 게 썼 으 니까 자기 들 끼 리 기지 가 넘 치 는 거 야. 헤헤................................................

좋은 웹페이지 즐겨찾기