📄 7-15.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 + -