实验一. A 率 13 折线编码
1.1 A 率 13 折线编码简介
A 率 13 折线的产生
A 率 13 折线的产生是从不均匀量化的基点出发,设法用 13 段折线逼近
A=87.6 的 A 率压缩特性。具体方法是:把输入 x 轴和输出 y 轴用两种不同的方
法划分。对 x 轴在 0~1(归一化)范围内不均匀分成 8 段,分段的规律就是每次
以二分之一对分,第一次在 0 到 1 之间的 1/2 处对分,第二次在 0 到 1/2 之间的
1/4 处对分,其余类推。对 y 轴在 0~1(归一化)范围内采用等分法,均匀分成 8
段,每段间隔均为 1/8。然后把 x,y 各对应段的交点连接起来构成 8 段直线,得
到近似 A=87.6 的 A 率压缩特性。这种近似中会得到 13 段(正负)斜率不同的
折线,所以称其为 A 率 13 折线。
A 率 13 折线的编码
在 13 折线编码中,普遍采用 8 位二进制码,对应有
M
82
个量化级,
256
即正、负输入幅度范围内各有 128 个量化级。这需要将 13 折线中的每个折线段
再均匀分为 16 个量化级,由于每个段落长度不均匀,因此正或负输入的 8 个段
落被划分成8 16 128
个不均匀的量化级。按折叠二进制码的码型,这 8 位码的
安排如下:
极性码
1C
段落码
段内码
C C C
2
3
4
C C C C
5
8
6
7
其中,第一位表示采样点的极性,第二到第四位表示采样点所在段落。第五到第
八位表示每段内的一个均匀量化级。
1.2 实验要求
1、了解 PCM 及 13 折线 A 率编码及译码的原理;
2、随机给出一个语音信号,并用 A 率 13 折线 PCM 对其编码;
3、将编码后的信号经过加性高斯白噪声信道,并在接收端对其进行译码;
4、分别画出原始语音信号、PCM 编码信号以及译码后信号的波形。
注:这个随机的语音信号可以用 load handel 语句可以得到 y 和 Fs。其中 y 是一
个语音信号的采样序列,Fs 是其采样频率。用的时候截取 y 的一段就可以。
实验源代码:
load handel
X=y(1:10000);
X=X';
%生成信号
%取 y 的一段函数
p=A13tiaozhi(X);
%将 X 编为 PCM 编码。
%将信号升余弦化通过信道
Ta=50;
%信号变为双极性信号以便传输
p1=p*2-1;
P1=repmat(p1,[Ta,1]);P1 = P1(1:end); % 信号方波过采样以匹配点数
S=shengyuxuan(P1,Ta);
%将双极性信号变为可传播的余弦信号
subplot(3,1,3)
plot(S)
axis([0,1000,-1,1]);
Nt=.01*randn(1,length(S));
S=S+Nt;
for i=1:length(S)/50
p2(i)=S(i*50-25);
end
p2=sign(p2);
p2=(p2+1)/2;
sum(abs(p2-p))
%生成高斯白噪声
%信号通过信道,并加入高斯白噪声
%抽样判决
%计算误码个数
y=A13jietiao(p2);
%将得到的 01 编码 p2 解调,得到输出 y
%画图对比原始信号与接收到的信号。
figure(2)
subplot(2,1,1);
plot(X)
title('原始信号');
subplot(2,1,2);
plot(y)
title('输出信号');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%A 率 13 折线编码调制
function p=A13tiaozhi(X)
x=X*2048;
%换算出 x 数量
x=fix(x);
p=[];
for i=1:length(x)
y=x(i);
%p 为存放编码的向量。用于传输。
%判断第 C1 位
t=zeros(1,7);
if y<0;
t(1)=0;
else t(1)=1;
end
y=abs(y);
if y/16>1
e=fix(log2(y/16)+1);
else e=0;%e 为一个辅助量。为 x 的 log2 得数。便于求出段码以及量化间隔与段落起始
end
%量化间隔
%段落起始
%C5 到 C8,即为 10 进制转化为 2 进制量。
dv=2^e-fix(2^(e-1));
di=fix(2^(e-1))*16;
dy=fix((y-di)/dv);
j=8;
while (j>4)
t(j)=rem(dy,2);
j=j-1;
dy=fix(dy/2);
end
j=4;%C2 到 C4
while (j>1)
t(j)=rem(e,2);
j=j-1;
e=fix(e/2);
end
p=[p,t];
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function y=A13jietiao(p)
y=[];
for i=1:length(p)/8
%A 率 13 折线,编码译码
e=p(2+(i-1)*8)*2^2+p(3+(i-1)*8)*2^1+p(4+(i-1)*8)*2^0;%算出 e。
dv=2^e-fix(2^(e-1));
di=fix(2^(e-1))*16;%段落起始
y(i)=di+dv*(p(5+(i-1)*8)*2^3+p(6+(i-1)*8)*2^2+p(7+(i-1)*8)*2^1+p(8+(i-1)*8)*2^0);
y(i)=(2*p(1+(i-1)*8)-1)*y(i)/2048;
%量化间隔
end
实验结果:
1
0
-1
0
1
0
-1
0
升 余 弦 滤 波 器 时 域 波 形
50
100
150
200
250
100
200
300
400
500
600
700
800
900
1000
第一幅图为升余弦滤波器的函数图。第二幅图为信号通过升余弦滤波器的图像。
1
0.5
0
-0.5
-1
0
1
0.5
0
-0.5
-1
0
原 始 信 号
1000
2000
3000
4000
5000
6000
7000
8000
9000 10000
输 出 信 号
1000
2000
3000
4000
5000
6000
7000
8000
9000 10000
第一幅图伟原始信号波形。第二幅图为接收端输出信号波形。
编程原理:
本程序分为三部分。主函数,编码函数 A13tiaozhi(X)与译码函数 A13jietiao(X)。
A-13 折线编码程序原理:I=n* ,n 为随机数。而 A-13 折线编码也是关于变量 n 的变换。
将 n 写成 16*2^m+K 的形式,其中,m 和 k 均为整数。则 m 的 2 进制数即为 C2,C3,C4 段
码。K 除以量化间隔的二进制形式即为 C5 到 C8 的段内码对应数值。运用此原理,分别求出
m 和 k 即可得到所需的 1 0 编码。