?? lip_decode.m
字號(hào):
function [DecodeMat,Sn,LSP,LIP]=lip_decode(DecodeMat,Sn,N,LSP,LIP)
% 函數(shù) LIP_DECODE() 根據(jù)排序位流 Sn,更新列表LIP、LSP和重構(gòu)系數(shù)矩陣 DecodeMat
% 輸入?yún)?shù):DecodeMat —— 上一級(jí)解碼后生成的重構(gòu)系數(shù)矩陣
% Sn —— 本級(jí)解碼排序位流
% N —— 本級(jí)解碼閾值的指數(shù)
% LSP —— 上一級(jí)解碼生成的重要系數(shù)列表
% LIP —— 上一級(jí)解碼生成的不重要系數(shù)列表
% 輸出參數(shù):DecodeMat —— 本級(jí)LIP掃描后更新的重構(gòu)系數(shù)矩陣
% Sn —— 對(duì)LIP列表掃描后更新的排序位流
% LSP —— 對(duì)LIP列表掃描后更新的重要系數(shù)列表
% LIP —— 本級(jí)LIP掃描后更新的不重要系數(shù)列表
rlip=size(LIP,1);
% r 是指向 LIP 當(dāng)前讀入表項(xiàng)位置的指針
r=1;
% 解碼路徑與編碼路徑基本一致,不過解碼是根據(jù)排序位流 Sn 來判斷系數(shù)是否重要
while r<=rlip
% 讀入當(dāng)前表項(xiàng)的坐標(biāo)值
rN=LIP(r,1);
cN=LIP(r,2);
% 根據(jù) Sn 判斷該表項(xiàng)是否重要
% 根據(jù) Sn 的生成原理,每次判斷都是讀入 Sn 的首位數(shù),判斷后立即刪除這一位數(shù)
if Sn(1)==1
% 若Sn(1)=1,則表示當(dāng)前表項(xiàng)是重要的
Sn(1)=[];
% 讀入后即刪除該位 Sn 數(shù)據(jù),使 Sn(2)變?yōu)?Sn(1),進(jìn)入下一次判斷
% 這時(shí)的 Sn(1) 是正負(fù)符號(hào)位
if Sn(1)==1
% Sn(1)=1,則相應(yīng)的系數(shù)為正數(shù),其值為本級(jí)解碼閾值的1.5倍
DecodeMat(rN,cN)=1.5*2^N;
Sn(1)=[];
else
% Sn(1)=0,則相應(yīng)的系數(shù)為負(fù)數(shù)
DecodeMat(rN,cN)=-1.5*2^N;
Sn(1)=[];
end
% 將該表項(xiàng)添加到重要系數(shù)列表 LSP
LSP=[LSP;LIP(r,:)];
% 將該表項(xiàng)從 LIP 中刪除
LIP(r,:)=[];
else
% 若不重要,則相應(yīng)的系數(shù)值為 0
DecodeMat(rN,cN)=0;
Sn(1)=[];
% 將指針指向下一個(gè)表項(xiàng)
r=r+1;
end
% 判斷當(dāng)前 LIP 的表長
rlip=size(LIP,1);
end
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -