📄 mat2huff.m
字号:
function y=mat2huff(x)if ndims(x)~=2 | ~isreal(x) | (~isnumeric(x) & -islogical(x))error('x必须是一个2D的实矩阵或是逻辑矩阵');end% 存储x的大小y.size=uint32(size(x));%找出x值的范围x=round(double(x));xmin=min(x(:));xmax=max(x(:));pmin=double(int16(xmin));pmin=uint16(pmin+32768);y.min=pmin;%在xmin和xmax中计算输入的直方图x=x(:)';h=histc(x,xmin:xmax);if max(h)>65535h=65535*h/max(h);endh=uint16(h);y.hist=h;% 计算输入矩阵的编码并存储 %生成huffman编码图map=huffman(double(h));hx=map(x(:)-xmin+1);hx=char(hx);hx=hx(:)';hx(hx==' ')=[];%计算编码大小ysize=ceil(length(hx)/16);hx16=repmat('0',1,ysize*16);hx16(1:length(hx))=hx;hx16=reshape(hx16,16,ysize);%把二进制转化成十进制hx16=hx16'-'0';twos=pow2(15:-1:0);y.code=uint16(sum(hx16.*twos(ones(ysize,1),:),2))';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -