⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lip_decode.asv

📁 实现SPIHT算法!!!!使用MATLAB 实现程序
💻 ASV
字号:
function [DecodeMat,Sn,LSP,LIP]=lip_decode(DecodeMat,Sn,N,LSP,LIP)
% 函数 LIP_DECODE() 根据排序位流 Sn,更新列表LIP、LSP
% 输入参数:DecodeMat —— 上一级解码后生成的重构系数矩阵
%          Sn —— 本级解码排序位流
%          N —— 本级解码阈值的指数
%          LSP —— 上一级解码生成的重要系数列表
%          LIP —— 上一级解码生成的不重要系数列表
% 输出参数:DecodeMat —— 本级LIP扫描后更新的重构系数矩阵
%          Sn —— 对LIP列表扫描后更新的排序位流
%          LSP —— 对LIP列表扫描后更新的重要系数列表
%          LIP —— 本级LIP扫描后更新的不重要系数列表

rlip=size(LIP,1);
r=1;
% 解码路径与编码路径基本一致,不过解码是根据排序位流 Sn 来选择执行路径
% 生成相应位置的重要系数
while r<=rlip
% 读入当前表项的坐标值
    rN=LIP(r,1);
    cN=LIP(r,2);
% 根据 Sn 判断该表项是否重要
% 根据 Sn 的生成原理,每次判断都是读入 Sn 的首位数,判断后立即删除这一位数
	if Sn(1)==1
        % 若Sn(1)=1,则表示当前表项是重要的
        Sn(1)=[];
        % 读入后即删除该位 Sn 数据,使 Sn(2)变为 Sn(1),进入下一次判断
        % 这时的 Sn(1) 是正负符号位
        if Sn(1)==1
            % Sn(1)=1,则相应的系数为正数,其值为本级解码阈值的1.5倍
            DecodeMat(rN,cN)=1.5*2^N;
            Sn(1)=[];
        else
            DecodeMat(rN,cN)=-1.5*2^N;
            Sn(1)=[];
        end
        LSP=[LSP;LIP(r,:)];
        LIP(r,:)=[];
    else
        DecodeMat(rN,cN)=0;
        Sn(1)=[];
        r=r+1;
	end
	rlip=size(LIP,1);
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -