日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab 树状链表,多级树集合分裂(SPIHT)算法的过程详解和Matlab实现(5)编码过程——精细扫描...

發布時間:2023/12/19 循环神经网络 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab 树状链表,多级树集合分裂(SPIHT)算法的过程详解和Matlab实现(5)编码过程——精细扫描... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文給出SPIHT編碼的精細掃描程序,其中包括一個能夠將帶小數的十進制數轉換為二進制表示的函數,這個轉換函數可以實現任意精度的二進制轉換,特別是將小數部分轉換為二進制表示。希望對有需要的朋友有所幫助。下一篇文章將給出SPIHT的解碼程序。請關注后續文章,歡迎 Email 聯系交流。

4、精細掃描程序

function Rn=refinement(N,LSP_Old)

% 函數 REFINEMENT()為精細編碼程序,對上一級編碼產生的重要系數列表LSP_Old,讀取每個

% 表項相應小波系數絕對值的二進制表示,輸出其中第N個重要的位,即相應于 2^N 處的碼數

% 輸入參數:N —— 本級編碼閾值的指數

% LSP_Old —— 上一級編碼產生的重要系數列表

% 輸出參數:Rn —— 精細掃描輸出位流

global Mat

% Mat是輸入的小波分解系數矩陣,作為全局變量,在編碼的相關程序中使用

Rn=[];

% 每級精細掃描開始時,Rn 均為空表

% LSP_Old 非空時才執行精細掃描程序

if ~isempty(LSP_Old)

rlsp=size(LSP_Old,1);

% 獲取 LSP_Old 的表項個數,對每個表項進行掃描

for r=1:rlsp

tMat=Mat(LSP_Old(r,1),LSP_Old(r,2));

% 讀取該表項對應的小波系數值

[biLSP,Np]=fracnum2bin(abs(tMat),N);

% 函數 FRACNUM2BIN() 根據精細掃描對應的權位 N ,將任意的十進制正數轉換為二進制數,

% 輸出參數為二進制表示列表 biLSP 和 權位N與最高權位的距離 Np 。

Rn=[Rn,biLSP(Np)];

% biLSP(Np)即為小波系數絕對值的二進制表示中第N個重要的位

end

end

(1)十進制數轉換為二進制表示的程序

function [binlist,qLpoint]=fracnum2bin(num,qLevel)

% 函數 FRACNUM2BIN() 根據精細掃描對應的權位 N ,將任意的十進制正數轉換為二進制數,

% 包括帶有任意位小數的十進制數。Matlab中的函數 dec2bin()、dec2binvec()只能將十

% 進制數的整數部分轉換為二進制表示,對小數部分則不轉換。

%

% 輸入參數:num —— 非負的十進制數

% qLevel —— 量化轉換精度,也可以是精細掃描對應的權位 N

% 輸出參數:biLSP —— 二進制表示列表

% Np —— 權位N與最高權位的距離,N 也是本級編碼閾值的指數

intBin=dec2binvec(num);

% 首先用Matlab函數dec2binvec()獲取整數部分的二進制表示intBin,低位在前,高位在后

intBin=intBin(end:-1:1);

% 根據個人習慣,將二進制表示轉換為高位在前,低位在后

lenIB=length(intBin);

% 求出二進制表示的長度

decpart=num-floor(num);

% 求出小數部分

decBin=[];

% 小數部分的二進制表示初始化為空表

% 根據量化精度要求輸出總的二進制表示列表

if (qLevel+1)>lenIB

% 如果量化精度高于整數部分的二進制碼長,則輸出為零值列表

binlist=zeros(1,qLevel+1);

qLpoint=1;

elseif qLevel>=0

% 如果量化精度在整數權位,則輸出整數部分的二進制表示intBin

% 不需轉換小數部分,同時輸出量化精度與最高權位的距離Np

binlist=intBin;

binlist(lenIB-qLevel+1:end)=0;

qLpoint=lenIB-qLevel;

elseif qLevel<0

% 如果量化精度在小數權位,則需轉換小數部分

N=-1;

while N>=qLevel

% 小數部分的轉換只需進行到量化精度處

res=decpart-2^N;

if res==0

decBin=[decBin,1];

decBin(end+1:-qLevel)=0;

% 如果小數部分的轉換完成時仍未達到量化精度所在的權位,則補零

break;

elseif res>0

decBin=[decBin,1];

decpart=res;

N=N-1;

else

decBin=[decBin,0];

N=N-1;

end

end

binlist=[intBin,decBin];

qLpoint=lenIB-qLevel;

% 輸出整數部分和小數部分的二進制表示intBin,decBin,以及量化精度與最高權位的距離Np

end

至此,SPIHT算法的編碼程序就介紹完畢啦!以后有時間的話會增加熵編碼的功能(例如Huffman編碼)。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的matlab 树状链表,多级树集合分裂(SPIHT)算法的过程详解和Matlab实现(5)编码过程——精细扫描...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。