⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 7-15.m

📁 matlab数字信号与应用源代码7
💻 M
字号:
%例程7-15  PCM编码
%首先,A律13折线量化的Matlab程序实现如下: 

function y=pcmA13(x)
%A律13折线压缩特性
x=x/max(x);                           % x归一化
z=sign(x);                            %语音信号是双极性信号,负方向对称
x=abs(x);
for i=1:length(x)
    if (x(i)>=0)&(x(i)<1/64)          %第一、二段斜率均为16,视为一条线段
        y(i)=16*x(i);
    elseif (x(i)>=1/64)&(x(i)<1/32)
        y(i)=8*x(i)+1/8;
    elseif (x(i)>=1/32)&(x(i)<1/16)
        y(i)=4*x(i)+2/8;
    elseif (x(i)>=1/16)&(x(i)<1/8)
        y(i)=2*x(i)+3/8;
    elseif (x(i)>=1/8)&(x(i)<1/4)
        y(i)=x(i)+4/8;
    elseif (x(i)>=1/4)&(x(i)<1/2)
        y(i)=1/2*x(i)+5/8;
    elseif (x(i)>=1/2)&(x(i)<=1)
        y(i)=1/4*x(i)+6/8;
    end
end
y=z.*y;

%接下来8位二进制编码的MATLAB程序实现如下:
function f=pcmcode(y)
%8位二进制PCM编码
f=zeros(length(y),8);
z=sign(y);
y=y*128;
y=fix(y);
y=abs(y);
for i=1:length(y)
    if y(i)==128
        y(i)=127.999;
    end
end
for i=1:length(y)
    for j=6:-1:0
        f(i,8-j)=fix(y(i)/(2^j));
        y(i)=mod(y(i),(2^j));
    end
end
for i=1:length(y)
    if z(i)==-1
        f(i,1)=0;
    else 
        f(i,1)=1;
    end
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -