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

📄 lip_scan.m

📁 实现SPIHT算法!!!!使用MATLAB 实现程序
💻 M
字号:
function [Sn,LSP,LIP]=lip_scan(Sn,N,LSP,LIP)
% 函数 LIP_SCAN() 检查LIP表的各个表项是否重要,更新列表LIP、LSP和排序位流 Sn
% 输入参数:Sn —— 本级编码排序位流,为空表
%          N —— 本级编码阈值的指数
%          LSP —— 上一级编码生成的重要系数列表
%          LIP —— 上一级编码生成的不重要系数列表
% 输出参数:Sn —— 对上一级编码生成的LIP列表扫描后更新的排序位流
%          LSP —— 对上一级编码生成的LIP列表扫描后更新的重要系数列表
%          LIP —— 经本级LIP扫描处理后更新的不重要系数列表

global Mat
% Mat是输入的小波分解系数矩阵,作为全局变量,在编码的相关程序中使用

rlip=size(LIP,1);
% r 是指向 LIP 当前读入表项位置的指针
r=1;
% 由于循环过程中列表 LIP 的表长会变化,不适合用 for 循环,故采用 while 循环
while r<=rlip
% 读入当前表项的坐标值
    rN=LIP(r,1);
    cN=LIP(r,2);
% 调用 SNOUT() 函数来判断该表项是否重要
	if SnOut(LIP(r,:),N)
        % 若重要,则输入‘1’到 Sn
        Sn=[Sn,1];
        % 输入正负符号‘1’或‘0’到 Sn
        if Mat(rN,cN)>=0
            Sn=[Sn,1];
        else
            Sn=[Sn,0];
        end
        % 将该表项添加到重要系数列表 LSP
        LSP=[LSP;LIP(r,:)];
        % 将该表项从 LIP 中删除
        LIP(r,:)=[];
    else
        % 若不重要,则输入‘0’到 Sn
        Sn=[Sn,0];
        % 将指针指向下一个表项
        r=r+1;
    end
    % 判断当前 LIP 的表长
	rlip=size(LIP,1);
end

⌨️ 快捷键说明

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