FileName PCMUQC_codem Description PCM非均匀量化编码 量化编码 Parameter List Output Parameter xx A律折线坐标X轴 yy A律折线坐标Y轴 PCM_modcodedata 编码后数据
function y=e_coding(x,q,a) % 对不同量化区间 按照段内起始电平 段内量化间隔对数据进行编码 % 参数说明:x:采样值(绝对值);q:量化间隔;a:段内起始电平 % 返回值:y:量化后编码结果
n=log2(q); %段内量化间隔q的二进制位数 d=x-a; %偏移量
if n==1 %量化间隔为2 if d<0 y=[0 0 0 1]; else y=[0 0 1 0]; end elseif n==2 %量化间隔为4 if d<0 if abs(d)<q/2 y=[0 0 0 1]; else y=[0 0 1 0]; end else if d<q/2 y=[0 1 0 1]; elseif d<q y=[0 1 1 0]; else y=[1 0 0 0]; end end elseif n==3 %量化间隔为8 if d<0 if abs(d)<q/2 y=[0 0 0 1]; elseif abs(d)<q y=[0 0 1 0]; elseif abs(d)<3q/2 y=[0 1 0 1]; elseif abs(d)<2q y=[0 1 1 0]; else y=[1 0 0 0]; end else if d<q/2 y=[0 1 0 1]; elseif d<q y=[0 1 1 0]; elseif d<3q/2 y=[1 0 0 1]; elseif d<2q y=[1 0 1 0]; else y=[1 1 0 0]; end end elseif n==4 %量化间隔为16 if d<0 if abs(d)<q/2 y=[0 0 0 1]; elseif abs(d)<q y=[0 0 1 0]; elseif abs(d)<3q/2 y=[0 1 0 1]; elseif abs(d)<2q y=[0 1 1 0]; elseif abs(d)<5q/2 y=[1 0 0 1]; elseif abs(d)<3q y=[1 0 1 0]; elseif abs(d)<7q/2 y=[1 1 0 1]; else y=[1 1 1 0]; end else if d<q/2 y=[0 1 0 1]; elseif d<q y=[0 1 1 0]; elseif d<3q/2 y=[1 0 0 1]; elseif d<2q y=[1 0 1 0]; elseif d<5q/2 y=[1 1 0 1]; elseif d<3q y=[1 1 1 0]; elseif d<7q/2 y=[1 1 1 1]; else y=[1 1 1 1]; end end end
en
原文地址: https://www.cveoy.top/t/topic/gdL0 著作权归作者所有。请勿转载和采集!