tt(x)=(q(x-1)+q(x))/2; %存放第几个电平段的电平值 end tt=[tt,1]; nu=ceil(log2(n)); decode=[];
for i=1:length(y)/(nu+1)
decode(i,[1:(nu+1)])=y((i-1)*(nu+1) + 1 : i*(nu+1)); end
ab=[] ; % 存放的十进制数,到tt中去找对应值
[w,z]=size(decode); for j=1:w L=nu; value=0; for i=0:L
value=decode(j,i+1)*(2^(L-i))+ value; end
ab(j)=value; end decode; w;
a3=[] ; % 存放信源译码值
for i=1:w a3(i)=tt(ab(i)); end
此函数的功能是将接收到的0、1比特流分为八位二进制一组一组的,再将每八位二进制转换为十进制数,再到每段中去寻到与发关端有相同约定段号值。即可恢复原信号的量化值。
子函数6:
function y5=Ayi(y,A) for i=1:length(y)
if((abs(y(i))>=0)&(abs(y(i))<=(1/(1+log(A))))) y1(i)=y(i)*(1+log(A))/A;
else if((abs(y(i))<=1)&(abs(y(i))>(1/(1+log(A))))) y1(i)=(1/A)*sign(y(i))*exp(abs(y(i))*(1+log(A))-1); end end end y5=y1; end
此函数的功能是将恢复的量化值通过A律反转换公式得到对应的值,是用13拆线转换的反过程。因为在当A=86.5时,可以用13折线用13条折线近似A律的平滑曲线,在实际工程中A律的平滑曲线不易实现,而用13折线法可以降低工程实现中的难度。
主函数:
clc clear all t=0:0.1:6*pi;
a1=sin(t); %模拟信源 figure(1) plot(t,a1);
title ( '原始模拟信号' );
t1=0:2*pi/32:6*pi; %抽样 a=sin(t1); figure plot(t1,a); stem(t1,a);
title ( '抽样信号' );
y4=zhexian(a) ; 折线 n=256; %量化电平数; bitstream=bianma(y4,n); bit1=BPSK(bitstream); y2=yima(bit1,n); y5=Ayi(y2,87.65); figure plot(y5);
stem(y5,'r')
axis([0,100,-1,1.01]) figure plot(y5,'r'); hold on plot(y5,'.b'); axis([0,100,-1,1.01])
主函数的功能是是产生模拟信号并且进行抽样得到抽样值,然后将各个子函数衔接到一块,形成一个比较完整的通信系统,进行仿真画出各个阶段重要的图形,以便观察和分析。
调试过程:
将各个子程序和主程序都放入MATLAB的工作空间中,双击main.m文件后,
点击Debug Run 运行程序。
在 这次通信系统仿真编程中,我遇到了很多问题,例如在利用13折线进