資源簡介
這是一個關于在MATLAB的基礎上上實現的對pcm編碼的理解,相信會有較大的幫助
代碼片段和文件信息
function?[ERRO?EIGHT?ELVE]=encoder(S)
z=sign(S);???????????????%判斷正負s為輸入數組
MAX=max(abs(S));?
ee=MAX/2048;
S=(abs(S/MAX));??????????%歸一化,s數組為歸一化以后的值數組
Q=2048*S;????????????????%量化
EIGHT=zeros(length(S)8);????%EIGHT向量用于存放量化后得到的八位二進制碼
ERRO=zeros(1length(S));???????%用于存放量化誤差
ELVE=zeros(length(S)11);???????%用于存放量化后得到的11位二進制碼
%判斷符號位和段落碼,一位一位挨著判斷
for?m=1:length(S)
????if?(Q(m)>=128?&?Q(m)<=2048)
????????EIGHT(m2)=1;
????end
????if?(Q(m)>=32?&?Q(m)<128)||(Q(m)>=512?&?Q(m)<=2048)
????????EIGHT(m3)=1;
????end
????if(Q(m)>=16?&?Q(m)<32)||(Q(m)>=64?&?Q(m)<128)||(Q(m)>=256?&?Q(m)<512)||(Q(m)>=1024?&?Q(m)<=2048)
????????EIGHT(m4)=1;
????end
????if?z(m)>0
????????EIGHT(m1)=1;
????elseif?z(m)<0
?????????EIGHT(m1)=0;
????end
end
%判斷段內碼
N=zeros(length(S));%每個元素的段落值,初始化
for?m=1:length(S)
????N(m)=EIGHT(m2)*4+EIGHT(m3)*2+E
- 上一篇:matlab求散點切線角度
- 下一篇:simuli
nk增量調制
評論
共有 條評論