huff2mat.m

function x=huff2mat(y)
if ~isstruct(y)||~isfield(y,'min')||~isfield(y,'size')||...
        ~isfield(y,'hist')||~isfield(y,'code')
    error('The inpyt muxt be a structure as returned by MAT2HUFF.');
end
sz=double(y.size);m=sz(1);   n=sz(2);
xmin=double(y.min)-32768; 
map=uint8(double(y.hist));
code=cellstr(char('','0','1'));
 link=[2;0;0];left=[2 3]; 
found=0;tofind=length(map);
 while length(left)&&(found<tofind)
    look=find(strcmp(map,code{left(1)}));
    if look
        link(left(1))=-look;
        left=left(2:end);
        found=found+1;
    else
        len=length(code);
        link(left(1))=len+1;
        link=[link;0;0];
        code{end+1}=strcat(code{left(1)},'0');
        code{end+1}=strcat(code{left(1)},'1');
        left=left(2:end);
        left=[left len+1 len+2]; 
    end
end
x=unravel(y.code',link,m*n);
x=x+xmin-1;
x=reshape(x,m,n);

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值