通信原理仿真Word格式.docx
《通信原理仿真Word格式.docx》由会员分享,可在线阅读,更多相关《通信原理仿真Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
个不均匀的量化级。
按折叠二进制码的码型,这8位码的安排如下:
极性码
段落码
段内码
其中,第一位表示采样点的极性,第二到第四位表示采样点所在段落。
第五到第八位表示每段内的一个均匀量化级。
1.2实验要求
Ø
1.了解PCM及13折线A率编码的概念
2.随机给出一个语音信号,并用A率13折线的方法对其编码
注:
这个随机的语音信号可以用[y,Fs]=loadhandel语句得到。
其中y一个语音信号的采样序列,Fs是其采样频率。
用的时候截取y的一段就可以。
1.3实验内容
1、产生一段随机语音信号
采样值为:
0.0627
0.0812
0.0250
-0.0127
-0.0443
-0.0312
-0.0189
-0.0250
-0.0062
0.0062
0.0312
0.0566
0.0950
0.1197
0.1258
0.0127
-0.0381
2、根据A率13折线编码方式对原始语音信号编码,详见toA13.m
编码后的波形
编码后的二进制码组,每8位代表一个抽样值
111011111111010011101111110010000100100101100110010010110100101101001011010010000100101100001100100011001100101111101100111110001111111011111111111101001100
100101100011
实验二.PCM编码信号通过加性高斯白噪声信号
2.1实验内容
将实验一产生的PCM编码信号通过一个加性高斯白噪声信道,并在接收端对其进行译码。
2.2实验要求
1.了解PCM解码的原理
2.画出原始语音信号、PCM编码信号以及译码后信号的波形
2.3实验内容
归一化波形通过加性高斯噪声通道信噪比为10dB,通过比较输出波形和归一化波形,发现误差不大,pcm编码有较高性能。
//
functiony=decode()
[in,out]=encode();
out2=reshape(out'
1,length(in)*8);
len=length(out2);
fori=1:
len
ifout2(i)==0
out2(i)=-1.0
else
out2(i)=1.0
end
end
out2=awgn(out2,10);
%加入噪声
%0、1码判别
ifout2(i)>
out2(i)=1;
out2(i)=0;
len2=len/8;
s=zeros(len2,8);
len2
forj=1:
8
s(i,j)=out2(8*(i-1)+j);
a=[0,16,32,64,128,256,512,1024];
%段落起点值
b=[1,1,2,4,8,16,32,64];
%每段的最小量化间隔
c=[0,1.5:
15.5];
%段内平均值
y=zeros(1,len2);
t1=s(i,1);
%取符号
t2=s(i,2)*4+s(i,3)*2+s(i,4)+1;
%判断段落位置
t3=s(i,5)*8+s(i,6)*4+s(i,7)*2+s(i,8);
%判断段内位置
ift3==0
y(i)=a(t2)/2048;
y(i)=(a(t2)+b(t2)*c(t3))/2048;
%还原量化后的电平值
ift1==0
y(i)=-y(i);
figure(4);
plot(y);
title('
输出波形'
);
functiony=toA13(x)
Max=max(abs(x));
flag=sign(x);
%判断极性
x=x/Max;
%归一化
figure
(1);
plot(x);
归一化波形'
x=abs(x);
xx=2048*x;
%量化编码
y=zeros(length(x),8);
%根据量化电平编码
%确定极性C1
length(x)
ifflag(i)<
y(i,1)=0;
y(i,1)=1;
%段落码C2,C3,C4
ifxx(i)>
128
y(i,2)=1;
512
y(i,3)=1;
1024
y(i,4)=1;
%段内码C5,C6,C7,C8
seq=zeros(length(x));
seq(i)=y(i,2)*4+y(i,3)*2+y(i,4)+1;
%段内位置
deltaV=[1,1,2,4,8,16,32,64];
beginV=[0,16,32,64,128,256,512,1024];
q=ceil((xx(i)-beginV(seq(i)))/deltaV(seq(i)));
ifq==0
y(i,(5:
8))=[0,0,0,0];
k=num2str(dec2bin(q-1,4));
forj=5:
y(i,j)=str2num(k(j-4));