gusucode.com > matlab通信工程仿真源码(张德丰等编著)程序书籍 > matlab_code/matlab通信工程仿真源码(张德丰等编著)/第9章/zhe13.m

    function y= zhe13(x)
% 本函数实现国际通用的PCM量化A律13折线特性近似
% x为输入的序列,变换后的值赋给序列y
x=x/max(x);     %求出序列的最大值,并同时归一化
z=sign(x);      %求的每一序列的值的符号
x=abs(x);       %取序列的绝对值
for i=1:length(x),  %直接将序列的绝对值量化
    if ((x(i)>=0)&(x(i)<1/64)),  %序列值位于第1和第2折线
        y(i)=16*x(i);
    else
        if(x(i)>=1/64 & x(i)<1/32), %序列值位于第3折线
            y(i)=8*x(i)+1/8;
        else
            if(x(i)>=1/32 & x(i)<1/16),  %若序列值位于第4折线
                y(i)=4*x(i)+2/8;
            else
                if(x(i)>=1/16 & x(i)<1/8), %若序列位于第5折线
                    y(i)=2*x(i)+3/8;
                else
                    if(x(i)>=1/8 & x(i)<1/4), %若序列位于第6折线
                        y(i)=x(i)+4/8;
                    else if (x(i)>=1/4 & x(i)<=1/2), %若序列值位于第7折线
                            y(i)=1/2*x(i)+5/8;
                        else if(x(i)>=1/2 & x(i)<=1), %若序列值位于第8折线
                                y(i)=1/4*x(i)+6/8;
                            end
                        end
                    end
                end
            end
        end
    end
end
y=z.*y;   %重新将符号代回序列中  %循环结束