以下**中,f代表原始碼,f1代表**碼,e代表**碼與原始碼差值,en代表變換後的差分值(通過含e的公式計算得到,因為有特定對應值,也可以通過查表實現)。f2是通過變換後的差分值得到的**碼。
最終輸出的結果是en,也就是變換後的差分值。
function en = my_dpcm(f)
[~,n] = size(f);
f1 = zeros(1,n);
f2 = zeros(1,n);
e = zeros(1,n);
en = zeros(1,n);
f1(1) = f(1);
f1(2) = f(1);
e(1) = 0;
en(1) = 0;
f2(1) = f(1);
for i = 2:n
if(i~=2)
f1(i) = ( f2(i-1)+f2(i-2) )/2;
ende(i) = f(i) - f1(i);
en(i) = 16*trunc((255 + e(i))/16)-256+8;
f2(i) = en(i) + f1(i);
end
endfunction a = trunc(b)
if(b>0)
a = floor(b);
elseif (b<0)
a = ceil(b);
else
a = 0;
endend
實驗四 dpcm編碼
一 實驗原理 dpcm編碼,是差分 編碼調製的縮寫,是典型的 編碼系統。這種方式是用已經過去的抽樣值來 當前的抽樣值,對它們的差值進行編碼。之所以不用原始樣本做 是因為在解碼端無法得到原始樣本資料,只能得到存在誤差的樣本。差值編碼可以提高編碼頻率,這種技術已應用於模擬訊號的數字通訊之中。二 實驗步驟...
Matlab 夏農編碼
資訊理論實驗課第乙個作業,是用matlab實現夏農編碼。拼拼湊湊刪刪改改做出了乙個,但是還不是很理想,陣列不知道怎麼轉換為字串拼接起來 夏農編碼 output 二進位制編碼code input 信源分布p function shannon p n length p 信源符號數 p sort p,de...
Matlab 算術編碼
資訊理論的第三個作業 終於是完完全全自己寫的 了!留下了不學無術的淚水qaq 算術編碼程式 輸入 信源u 信源分布p 需要進行編碼的序列s 輸入備註 輸入格式 a 0 1 p 1 4 3 4 s 1 0 1 1 1 輸出 該序列的算術編碼s 輸出備註 以序列所在區間的左端點值作為所求序列的碼字 輸入...