matlab实现huffman编码
如何用matlab实现图象的huffman编解码,最好有详细的解释.谢谢!
function A=f(a,b1)
A=zeros(1,length(b1))
for i=1:length(b1)
A(i)=length(strfind(a,b1(i)));
end
function END=huffman(A)
A=A/sum(A);
A=fliplr(sort(A));
T=A;
[m,n]=size(A);
B=zeros(n,n-1);
for i=1:n
B(i,1)=T(i);
end
r=B(i,1)+B(i-1,1);
T(n-1)=r;
T(n)=0;
T=fliplr(sort(T));
t=n-1;
for j=2:n-1
for i=1:t
B(i,j)=T(i);
end
K=find(T==r);
B(n,j)=K(end);
r=(B(t-1,j)+B(t,j));
T(t-1)=r;
T(t)=0;
T=fliplr(sort(T));
t=t-1;
end
B;
END1=sym('[0,1]');
END=END1;
t=3;
d=1;
for j=n-2:-1:1
for i=1:t-2
if i>1&&B(i,j)==B(i-1,j)
d=d+1;
else
d=1;
end
B(B(n,j+1),j+1)=-1;
temp=B(:,j+1);
x=find(temp==B(i,j));
END(i)=END1(x(d));
end
y=B(n,j+1);
END(t-1)=[char(END1(y)),'0'];
END(t)=[char(END1(y)),'1'];
t=t+1;
END1=END;
end
这个是我以前用过的程序,你自己看着修改修改吧。
不明白的命令在help里面找。