我想用哈夫曼编码的方式在MATLAB上实现对图像的压缩,并输出一个压缩后的文件,还要显示压缩后的一些信息(如压缩比之类的),找了书上的一些代码,想写成“.M”文件,但是不知道还要加点什么或者修改哪里才能实现,希望高手能帮帮忙~!好急啊~怎么办呢...:Q 
以下是代码:
[Filename,Pathname]=uigetfile(...   
   {'*.tif';'*.bmp'},'选择图片');
str=[Pathname Filename];
if (Filename~=0)
   z=imread(str);
   imshow(z);
   %else
   %clear;      %显示数组Z
[m,n]=size(z);
p1=1;s=m*n;
for k=1:m      %获取图像颜色总数
    for l=1:n
        f=0;
        for b=1:p1-1
            if(c(b,1)==z(k,l)) f=1;break;end
        end
        if(f==0)c(p1,1)=z(k,l);p1=p1+1;end
    end
end
for g=1:p1-1     %计算各种颜色值出现概率
    p(g)=0;c(g,2)=0;
    for k=1:m
        for l=1:n
            if(c(g,1)==z(k,l))p(g)=p(g)+1;end
        end
    end
    p(g)=p(g)/s;
end
pn=0;po=1;
while(1)        %按概率排序生成一个符号(0或1)树并记录各节点
    if(pn>=1.0) break;
    else
        [pm,p2]=min(p(1:p1-1));p(p2)=1.1;
        [pm2,p3]=min(p(1:p1-1));p(p3)=1.1;
        pn=pm+pm2;p(p1)=pn;
        tree(po,1)=p2;tree(po,2)=p3;
        po=po+1;p1=p1+1;
    end
end
for k=1:po-1     %沿符号树进行搜索生成哈夫曼编码
    tt=k;m1=1;
    if(or(tree(k,1)<g,tree(k,2)<g))
        if(tree(k,1)<g)
            c(tree(k,1),2)=c(tree(k,1),2)+m1;
            m2=1;
            while(tt<po-1)
                m1=m1*2;
                for l=tt:po-1
                    if(tree(l,1)==tt+g)
                        c(tree(k,1),2)=c(tree(k,1),2)+m1;
                        m2=m2+1;tt=l;break;
                    elseif(tree(l,2)==tt+g)
                        m2=m2+1;tt=l;break;
                    end
                end
            end
            c(tree(k,l),3)=m2;
        end
        tt=k;m1=1;
        if(tree(k,2)<g)
            m2=1;
            while(tt<po-1)
                m1=m1*2;
                for l=tt:po-1
                    if(tree(l,1)==tt+g)
                        c(tree(k,2),2)=c(tree(k,2),2)+m1;
                        m2=m2+1;tt=l;break;
                    elseif(tree(l,2)==tt+g)
                        m2=m2+1;tt=l;break;
                    end
                end
            end
            c(tree(k,2),3)=m2;
        end
    end
end
end