大作业
西安电子科技大学 宽带无线接入与无线IP 技术
课程作业
题目:自适应编码调制技术 学院:通信工程学院 姓名:
2015年4月28日
摘 要
摘 要
本文主要介绍了自适应编码调制技术的基本原理,讨论了所用到的信道编码和调制技术,最后对自适应编码调制技术进行了简单的仿真。
关键字:自适应编码 仿真
ABSTRACT
ABSTRACT
This paper begins with an introduction to the basic principle of Adaptive Modulation and Coding(AMC), followed by a presentation of Channel coding and Modulation technology and concludes with a simple simulation for the adaptive modulation and coding technology.
Keywords :Adaptive Modulation and Coding simulation
目 录 i
目 录
第一章 引言 . .................................................................................................................... 1 第二章 基本原理 . ............................................................................................................ 3
2.1 AMC基本原理 . ................................................................................................... 3 2.2信道编码 . ............................................................................................................. 4 2.3调制 . ..................................................................................................................... 4
2.3.1 BPSK 和QPSK 调制 ................................................................................. 4 2.3.2 16QAM调制 ............................................................................................. 5
第三章 仿真分析 . ............................................................................................................ 7
3.1误码率分析 . ......................................................................................................... 7 3.2误块率分析 . ......................................................................................................... 7 3.3 信息传输速率分析 . ............................................................................................ 8 3.4结论 . ..................................................................................................................... 9 参考文献 . ........................................................................................................................ 11 附录 . ................................................................................................................................ 12
ii
目 录
第一章 引言 1
第一章 引言
随着现代无线通信技术的飞速发展以及人们对无线数据业务需求的快速增长, 高速无线数据传输迫切需要开发出能够有效抗信道衰落的高频谱利用率、高可靠性和智能化的通信技术。其中如何提高系统在衰落信道中的频谱利用率, 逐渐成为无线通信技术的研究热点。而自适应编码调制技术正是以其智能化的传输机制、高效的频谱利用率得到了业界的广泛关注与研究, 从而成为目前和未来无线通信系统的关键技术之一。
对于现在的无线通信系统, 假如以最优信道状态来设计系统, 传输将是不稳定的, 因而无法实现要求连续传输的业务, 另一方面, 如果以最差信道状态为基准, 对于较为理想的信道则会造成浪费。针对这种情况, 人们设计了自适应编码调制技术, 在自适应无线通信系统中, 接收端估计信道状态, 并通过反馈信道传回发射端, 针对当前的信道状态, 设计合适的发射功率、调制模式、编码形式等从而使系统的整体传输性能达到最优, 满足高效可靠传输的目的。
2
自适应编码调制技术
第二章 基本原理 3
第二章 基本原理
2.1 AMC基本原理
AMC 的基本原理是通过信道估计,获得信道的瞬时状态信息,根据无线信道变化选择合适的调制和编码方式。网络侧根据用户瞬时信道质量状况和目前无线资源,选择最合适的下行链路调制和编码方式,从而提高频带利用效率,使用户达到尽量高的数据吞吐率。当用户处于有利的通信地点时(如靠近基站或存在视距链路) ,用户数据发送可以采用高阶调制和高速率的信道编码方式,例如:16QAM 和3/4编码速率,从而得到高的峰值速率;而当用户处于不利的通信地点时(如位于小区边缘或者信道深衰落) ,网络侧则选取低阶调制方式和低速率的信道编码方
如图2.1,在OFDM 系统中发射端,输入的信号经过编码、调制、OFDM 信号的产生,然后发射出去,经过时变信道后,在接收端,经过OFDM 信号的接收、解调、译码,最后得到所需要的数据。其中的编码采用的是卷积码,调制方式采用的是QPSK 或16QAM 。
当前的信道状态信息可以通过信道估计得到,然后通过一定的自适应算法来控制输入端的编码和调制以及接收端相应的解调和译码。其中编码和译码的自适应调节参数是信道编码的码率,码率根据信道状态来自适应地调整。同样调制和解调的方式也是根据信道状态来确定选择QPSK 和16QAM 两种中的一种。
4
自适应编码调制技术
2.2信道编码
2.3调制
2.3.1 BPSK 和QPSK 调制
在二进制数字调制中,当正弦载波的相位随二进制数字基带信号离散变化时,则产生BPSK (Binary Phase Shift Keying )信号。通常用以调信号载波的0度和180度分别表示数字基带信号的1和0。一个BPSK 符号表示一个比特。
QPSK 则是用载波的四个相位分别表示00、01、10和11。一个QPSK 符号可以表示二个比特。
第二章 基本原理 5
下图2.3是QPSK 的星座图,
图2.3 QPSK的星座图
2.3.2 16QAM调制
16QAM 一个符号可以表示4个比特,如下是16QAM 的星座图。QAM 调制星座图中的点不再位于单位圆上,而是分布在复平面的一定范围内,各点如果模相同,则相位必不相同,如果相位相同则模必不相同。
16QAM 星座图
3
2
1
Q u a d r a t u r e
In-Phase
图2.4 16QAM星座图
6
自适应编码调制技术
第三章 仿真分析 7
第三章 仿真分析
3.1误率分
10
码
AMC 分析-误码率
析
10
10B E R
10
10
10SNR/db
图3.1 误码率分析
本文针对不同编码速率不同调制格式在五种情况下做了仿真,结果如上图3.1。 其中R=1/3 Bpsk 调制的误码率最低,R=1/2 16QAM 调制的误码率最高。比较可以看出,同样的信噪比条件下,高的编码速率和高阶调制抗干扰能力越弱,误码率越高。
3.2误块率分析
由于实际通信中编码以比特块进行的(比如统一以100个比特为一块进行编码传送),所以误块率更具有参考价值。
8
自适应编码调制技术
误块率
SNR/db
图3.2 误块率
同样,高阶调制,高的编码速率误块率越高,抗干扰能力差。
3.3 信息传输速率分析
在码元速率一样的前提下,R=1/3 Bpsk 的最大传输速率最低,以其为基准,R=1/2 Bpsk的最大传输速率是R=1/3 Bpsk的1.5倍。未编码Bpsk 和R=1/2 Qpsk的最大传输速率是R=1/3 Bpsk 的2倍。R=1/2 QAM 是的最大传输速率是R=1/3 Bpsk 的6倍。在不同的误码率情况下,仿真计算每种方式的吞吐量(传输速率)。
传输速率
SNR/db
第三章 仿真分析
图3.3 吞吐量(传输速率)分析
9
由上图3.3可以看出,虽然R=1/2 16QAM 调制的最大传输速率是R = 1/3 BPSK 调制的6倍,但是在信道条件不好(信噪比较低)的情况下,R = 1/3 BPSK调制的吞吐量还是比R=1/2 16QAM调制的高的。
3.4结论
为提高信息传输速率,可以检测信道的条件,利用AMC 技术,当用户处于有利的通信地点时(小区中心),可以采用高的编码速率和高阶调制,从而得到高的峰值速率;而当用户处于不利的通信地点时(如位于小区边缘) 采用低的编码速率和低阶调制方式来保证通信质量。
10
自适应编码调制技术
参考文献 11
参考文献
[1]张辉 曹丽娜 主编 现代通信原理与技术 [2]刘爱莲 主编 纠错编码原理及MATLAB 实现 [3]刘学勇 编著ATLAB/Simulink通信系统建模与仿真
12
自适应编码调制技术
附录
源程序 文件1 wukuai.m
•function out = Wukuai(x,y) % 统计误块率
% 统计出错的的块的个数(块的大小是100) % x是输入信息msg ,y 是接码后的信息dsg n=length(x);
number = ceil(n/100);
wrongblock = zeros(1,number);%标记出错的块,1 代表错误,0 代表正确 for k=1:number if k == number
a = x(100*(k-1)+1 : end); b = y(100*(k-1)+1 : end); else
a = x(100*(k-1)+1 : 100*k); b = y(100*(k-1)+1 : 100*k); end err = (a ~= b); c=sum(err); if c>0
wrongblock(k) = 1; end end
out = sum(wrongblock)/number; end 文件2
clc clear all
SNR = 0: 1.5 : 22; % 信噪比 msg = randint(1,100000); % 输入信息 BER0 = zeros(1,length(SNR)); BER1 = zeros(1,length(SNR)); BER2 = zeros(1,length(SNR)); BER3 = zeros(1,length(SNR)); BER4 = zeros(1,length(SNR)); %误块率
Wrongblock0 = zeros(1,length(SNR)); Wrongblock1 = zeros(1,length(SNR)); Wrongblock2 = zeros(1,length(SNR)); Wrongblock3 = zeros(1,length(SNR)); Wrongblock4 = zeros(1,length(SNR)); %传输速率(吞吐率)
cap0 = zeros(1,length(SNR)); cap1 = zeros(1,length(SNR)); cap2 = zeros(1,length(SNR)); cap3 = zeros(1,length(SNR)); cap4 = zeros(1,length(SNR));
附录 13
%-------------------------------------------------------- %网络结构
%trelllist1 1/2 编码速率
trellis1 = poly2trellis(3,[5,7]); %trellist2 1/3 编码速率
trellis2 = poly2trellis(3,[1 6 5]);
%----------------------------------------------------------------- %未编码的误码率 2psk modbit0 = pskmod(msg,2); for k = 1 : length(SNR)
y0 = awgn(modbit0,SNR(k),'measured'); %在传输序列中加入AWGN 噪声 demmsg0 = pskdemod(y0,2); %解调 recode0 = reshape(demmsg0',1,[]); [num0,rat0] = biterr(recode0,msg); BER0(k) = rat0; %误码计算
Wrongblock0(k) = Wukuai(msg,recode0); %计算吞吐率 以 r=1/3 2psk 为基准 %(2psk)是其2倍
cap0(k) = (1 - Wrongblock0(k)) * 2; end
%----------------------------------------------------------------------- %编码的误码率 1/2 编码速率 2psk
code1 = convenc(msg,trellis1); %编码 modbit1 = pskmod(code1,2); %调制 for k = 1 : length(SNR)
y1 = awgn(modbit1,SNR(k),'measured'); %在传输序列中加入AWGN 噪声 demmsg1 = pskdemod(y1,2); %解调 recode1 = reshape(demmsg1',1,[]);
14
自适应编码调制技术
tblen = 5; %回潮长度
decoded1 = vitdec(recode1,trellis1,tblen,'cont','hard'); %译码
[num1 ,rat1] = biterr(double(decoded1(tblen+1 : end)),msg(1: end - tblen)); %误码计算 BER1(k) = rat1;
Wrongblock1(k) = Wukuai(double(decoded1(tblen+1 : end)),msg(1: end - tblen)); %计算吞吐率 以 r=1/3 2psk 为基准 %(r = 1/2 2psk)是其1.5倍
cap1(k) = (1 - Wrongblock1(k)) * 1.5; end
%编码的误码率 1/3 编码速率 2psk code2 = convenc(msg,trellis2); modbit2 = pskmod(code2,2); for k = 1 : length(SNR)
y2 = awgn(modbit2,SNR(k),'measured'); %在传输序列中加入AWGN 噪声 demmsg2 = pskdemod(y2,2); %解调 recode2 = reshape(demmsg2',1,[]);
tblen = 5; %回潮长度
decoded2 = vitdec(recode2,trellis2,tblen,'cont','hard'); %译码
[num2 ,rat2] = biterr(double(decoded2(tblen+1 : end)),msg(1: end - tblen)); %误码计算 BER2(k) = rat2;
Wrongblock2(k) = Wukuai(double(decoded2(tblen+1 : end)),msg(1: end - tblen)); %计算吞吐率 以 r=1/3 2psk 为基准 cap2(k) = (1 - Wrongblock2(k)) * 1; end
%编码的误码率 r = 1/2 qpsk 2
code3 = convenc(msg,trellis1); %编码
deccode1 = zeros(1,length(code3)/2); %二进制码变为4进制消息数据 demmsg1 = zeros(1,length(code3)); for i = 1 : length(code3)/2 str1 = int2str(code3(2*i-1)) ; str2 = int2str(code3(2*i)) ;
deccode1(i) = bin2dec(strcat(str1,str2)); end M = 4;
graycode=[0 1 3 2]; %gray编码规则 graymsg = graycode(deccode1+1); %gray映射 for k = 1 : length(SNR)
modbit3 = pskmod(graymsg,M); %基带qpsk 调制
y3 = awgn(modbit3,SNR(k),'measured'); %在传输序列中加入AWGN 噪声
附录
yjie = pskdemod(y3,4); %解调
decmsg = graycode(yjie+1);
for i = 1 : length(decmsg)
temp = dec2bin(decmsg(i),2);
demmsg1(2*i-1) = str2num(temp(1));
demmsg1(2*i) = str2num(temp(2));
end
recode3 = reshape(demmsg1',1,[]);
tblen = 5; %回潮长度
mdecoded3 = vitdec(recode3,trellis1,tblen,'cont','hard'); %译码 15
[num3 ,rat3] = biterr(double(mdecoded3(tblen+1 : end)),msg(1: end - tblen)); %误码计算 BER3(k) = rat3;
Wrongblock3(k) = Wukuai(double(mdecoded3(tblen+1 : end)),msg(1: end - tblen)); %计算吞吐率 以 r=1/3 2psk 为基准
%(r = 1/2 qpsk)是其2倍
cap3(k) = (1 - Wrongblock3(k)) * 2;
end
%编码的误码率 r = 1/2 16qam 4
code4= convenc(msg,trellis1); %编码
demmsg4 = zeros(1,length(code4));
M=16;
x4=reshape(code4,4,length(code4)/4); %将原始的二进制比特序列每四个一组分组,并排列成4行length(code4)/4列的矩阵
xsym=bi2de(x4.','left-msb');
deccode4 = xsym'; %二进制码变为16进制消息数据
%----------------------------------------------------------------------
graycode=[0 1 3 2 6 7 5 4 12 13 15 14 10 11 9 8]; %gray编码规则
ungraycode4=[1 2 4 3 8 7 5 6 16 15 13 14 9 10 12 11] %gray反解码
graymsg = graycode(deccode4+1); %gray映射
for k = 1 : length(SNR)
modbit4 = qammod(graymsg,M); %基带16qam 调制
y4 = awgn(modbit4,SNR(k),'measured'); %在传输序列中加入AWGN 噪声
yjie4 = qamdemod(y4,M); %16qam解调
decmsg4 = ungraycode4(yjie4+1)-1;
for i = 1 : length(decmsg4)
temp = dec2bin(decmsg4(i),4);
demmsg4(4*i-3) = str2num(temp(1));
demmsg4(4*i-2) = str2num(temp(2));
demmsg4(4*i-1) = str2num(temp(3));
16
end 自适应编码调制技术 demmsg4(4*i) = str2num(temp(4));
recode4 = reshape(demmsg4',1,[]);
tblen = 5; %回潮长度
mdecoded4 = vitdec(recode4,trellis1,tblen,'cont','hard'); %译码
[num4 ,rat4] = biterr(double(mdecoded4(tblen+1 : end)),msg(1: end - tblen)); %误码计算 BER4(k) = rat4;
Wrongblock4(k) = Wukuai(double(mdecoded4(tblen+1 : end)),msg(1: end - tblen)); %计算吞吐率 以 r=1/3 2psk 为基准
%(r = 1/2 16qam)是其6倍
cap4(k) = (1 - Wrongblock4(k)) * 6;
end
%计算吞吐量 假设各种调制方式的码元传输速率是一样的,
%以R=1/3 bpsk 调制为基准
%----------------------------------------------------------------------
%画图
length(SNR)
figure(1)
%semilogy(SNR,BER0,'k-',SNR,BER1,'k-s',SNR,BER2,'g-diamond',SNR,BER3,'r--s');
semilogy(SNR,BER0,'k-',SNR,BER1,'k-s',SNR,BER2,'g-diamond',SNR,BER3,'r--s',SNR,BER4,'b--s');
xlabel('SNR/db');
ylabel('BER');
legend('未编码 Bpsk','R=1/2 Bpsk','R=1/3 Bpsk','R=1/2 Qpsk','R=1/2 16QAM');
%legend('未编码2psk',' 卷积编码2psk (R=1/2)',' 卷积编码2psk (R=1/3)',' 卷积编码qpsk (R=1/2)');
title('AMC分析-误码率')
grid on
figure(2)
plot(SNR,Wrongblock0,'k-',SNR,Wrongblock1,'k-s',SNR,Wrongblock2,'g-diamond',SNR,Wrongblock3,'r--s',SNR,Wrongblock4,'b--s');
axis([0 22 0 1]);
xlabel('SNR/db');
ylabel('误块率');
legend('未编码 Bpsk','R=1/2 Bpsk','R=1/3 Bpsk','R=1/2 Qpsk','R=1/2 16QAM');
%legend('卷积编码2psk (R=1/2)',' 卷积编码2psk (R=1/3)',' 卷积编码qpsk (R=1/2)'R=1/2 16QAM'); title('AMC分析-误块率')
grid on
figure(3) 附录 17
plot(SNR,cap0,SNR,cap1,'k-s',SNR,cap2,'g-diamond',SNR,cap3,'r--s',SNR,cap4,'b--s'); axis([0 22 0 6]);
xlabel('SNR/db');
ylabel('传输速率');
legend('未编码 Bpsk','R=1/2 Bpsk','R=1/3 Bpsk','R=1/2 Qpsk','R=1/2 16QAM');
%legend('卷积编码2psk (R=1/2)',' 卷积编码2psk (R=1/3)',' 卷积编码qpsk (R=1/2)'R=1/2 16QAM'); title('AMC分析-传输速率(码元速率一样)')
grid on
大作业
西安电子科技大学 宽带无线接入与无线IP 技术
课程作业
题目:自适应编码调制技术 学院:通信工程学院 姓名:
2015年4月28日
摘 要
摘 要
本文主要介绍了自适应编码调制技术的基本原理,讨论了所用到的信道编码和调制技术,最后对自适应编码调制技术进行了简单的仿真。
关键字:自适应编码 仿真
ABSTRACT
ABSTRACT
This paper begins with an introduction to the basic principle of Adaptive Modulation and Coding(AMC), followed by a presentation of Channel coding and Modulation technology and concludes with a simple simulation for the adaptive modulation and coding technology.
Keywords :Adaptive Modulation and Coding simulation
目 录 i
目 录
第一章 引言 . .................................................................................................................... 1 第二章 基本原理 . ............................................................................................................ 3
2.1 AMC基本原理 . ................................................................................................... 3 2.2信道编码 . ............................................................................................................. 4 2.3调制 . ..................................................................................................................... 4
2.3.1 BPSK 和QPSK 调制 ................................................................................. 4 2.3.2 16QAM调制 ............................................................................................. 5
第三章 仿真分析 . ............................................................................................................ 7
3.1误码率分析 . ......................................................................................................... 7 3.2误块率分析 . ......................................................................................................... 7 3.3 信息传输速率分析 . ............................................................................................ 8 3.4结论 . ..................................................................................................................... 9 参考文献 . ........................................................................................................................ 11 附录 . ................................................................................................................................ 12
ii
目 录
第一章 引言 1
第一章 引言
随着现代无线通信技术的飞速发展以及人们对无线数据业务需求的快速增长, 高速无线数据传输迫切需要开发出能够有效抗信道衰落的高频谱利用率、高可靠性和智能化的通信技术。其中如何提高系统在衰落信道中的频谱利用率, 逐渐成为无线通信技术的研究热点。而自适应编码调制技术正是以其智能化的传输机制、高效的频谱利用率得到了业界的广泛关注与研究, 从而成为目前和未来无线通信系统的关键技术之一。
对于现在的无线通信系统, 假如以最优信道状态来设计系统, 传输将是不稳定的, 因而无法实现要求连续传输的业务, 另一方面, 如果以最差信道状态为基准, 对于较为理想的信道则会造成浪费。针对这种情况, 人们设计了自适应编码调制技术, 在自适应无线通信系统中, 接收端估计信道状态, 并通过反馈信道传回发射端, 针对当前的信道状态, 设计合适的发射功率、调制模式、编码形式等从而使系统的整体传输性能达到最优, 满足高效可靠传输的目的。
2
自适应编码调制技术
第二章 基本原理 3
第二章 基本原理
2.1 AMC基本原理
AMC 的基本原理是通过信道估计,获得信道的瞬时状态信息,根据无线信道变化选择合适的调制和编码方式。网络侧根据用户瞬时信道质量状况和目前无线资源,选择最合适的下行链路调制和编码方式,从而提高频带利用效率,使用户达到尽量高的数据吞吐率。当用户处于有利的通信地点时(如靠近基站或存在视距链路) ,用户数据发送可以采用高阶调制和高速率的信道编码方式,例如:16QAM 和3/4编码速率,从而得到高的峰值速率;而当用户处于不利的通信地点时(如位于小区边缘或者信道深衰落) ,网络侧则选取低阶调制方式和低速率的信道编码方
如图2.1,在OFDM 系统中发射端,输入的信号经过编码、调制、OFDM 信号的产生,然后发射出去,经过时变信道后,在接收端,经过OFDM 信号的接收、解调、译码,最后得到所需要的数据。其中的编码采用的是卷积码,调制方式采用的是QPSK 或16QAM 。
当前的信道状态信息可以通过信道估计得到,然后通过一定的自适应算法来控制输入端的编码和调制以及接收端相应的解调和译码。其中编码和译码的自适应调节参数是信道编码的码率,码率根据信道状态来自适应地调整。同样调制和解调的方式也是根据信道状态来确定选择QPSK 和16QAM 两种中的一种。
4
自适应编码调制技术
2.2信道编码
2.3调制
2.3.1 BPSK 和QPSK 调制
在二进制数字调制中,当正弦载波的相位随二进制数字基带信号离散变化时,则产生BPSK (Binary Phase Shift Keying )信号。通常用以调信号载波的0度和180度分别表示数字基带信号的1和0。一个BPSK 符号表示一个比特。
QPSK 则是用载波的四个相位分别表示00、01、10和11。一个QPSK 符号可以表示二个比特。
第二章 基本原理 5
下图2.3是QPSK 的星座图,
图2.3 QPSK的星座图
2.3.2 16QAM调制
16QAM 一个符号可以表示4个比特,如下是16QAM 的星座图。QAM 调制星座图中的点不再位于单位圆上,而是分布在复平面的一定范围内,各点如果模相同,则相位必不相同,如果相位相同则模必不相同。
16QAM 星座图
3
2
1
Q u a d r a t u r e
In-Phase
图2.4 16QAM星座图
6
自适应编码调制技术
第三章 仿真分析 7
第三章 仿真分析
3.1误率分
10
码
AMC 分析-误码率
析
10
10B E R
10
10
10SNR/db
图3.1 误码率分析
本文针对不同编码速率不同调制格式在五种情况下做了仿真,结果如上图3.1。 其中R=1/3 Bpsk 调制的误码率最低,R=1/2 16QAM 调制的误码率最高。比较可以看出,同样的信噪比条件下,高的编码速率和高阶调制抗干扰能力越弱,误码率越高。
3.2误块率分析
由于实际通信中编码以比特块进行的(比如统一以100个比特为一块进行编码传送),所以误块率更具有参考价值。
8
自适应编码调制技术
误块率
SNR/db
图3.2 误块率
同样,高阶调制,高的编码速率误块率越高,抗干扰能力差。
3.3 信息传输速率分析
在码元速率一样的前提下,R=1/3 Bpsk 的最大传输速率最低,以其为基准,R=1/2 Bpsk的最大传输速率是R=1/3 Bpsk的1.5倍。未编码Bpsk 和R=1/2 Qpsk的最大传输速率是R=1/3 Bpsk 的2倍。R=1/2 QAM 是的最大传输速率是R=1/3 Bpsk 的6倍。在不同的误码率情况下,仿真计算每种方式的吞吐量(传输速率)。
传输速率
SNR/db
第三章 仿真分析
图3.3 吞吐量(传输速率)分析
9
由上图3.3可以看出,虽然R=1/2 16QAM 调制的最大传输速率是R = 1/3 BPSK 调制的6倍,但是在信道条件不好(信噪比较低)的情况下,R = 1/3 BPSK调制的吞吐量还是比R=1/2 16QAM调制的高的。
3.4结论
为提高信息传输速率,可以检测信道的条件,利用AMC 技术,当用户处于有利的通信地点时(小区中心),可以采用高的编码速率和高阶调制,从而得到高的峰值速率;而当用户处于不利的通信地点时(如位于小区边缘) 采用低的编码速率和低阶调制方式来保证通信质量。
10
自适应编码调制技术
参考文献 11
参考文献
[1]张辉 曹丽娜 主编 现代通信原理与技术 [2]刘爱莲 主编 纠错编码原理及MATLAB 实现 [3]刘学勇 编著ATLAB/Simulink通信系统建模与仿真
12
自适应编码调制技术
附录
源程序 文件1 wukuai.m
•function out = Wukuai(x,y) % 统计误块率
% 统计出错的的块的个数(块的大小是100) % x是输入信息msg ,y 是接码后的信息dsg n=length(x);
number = ceil(n/100);
wrongblock = zeros(1,number);%标记出错的块,1 代表错误,0 代表正确 for k=1:number if k == number
a = x(100*(k-1)+1 : end); b = y(100*(k-1)+1 : end); else
a = x(100*(k-1)+1 : 100*k); b = y(100*(k-1)+1 : 100*k); end err = (a ~= b); c=sum(err); if c>0
wrongblock(k) = 1; end end
out = sum(wrongblock)/number; end 文件2
clc clear all
SNR = 0: 1.5 : 22; % 信噪比 msg = randint(1,100000); % 输入信息 BER0 = zeros(1,length(SNR)); BER1 = zeros(1,length(SNR)); BER2 = zeros(1,length(SNR)); BER3 = zeros(1,length(SNR)); BER4 = zeros(1,length(SNR)); %误块率
Wrongblock0 = zeros(1,length(SNR)); Wrongblock1 = zeros(1,length(SNR)); Wrongblock2 = zeros(1,length(SNR)); Wrongblock3 = zeros(1,length(SNR)); Wrongblock4 = zeros(1,length(SNR)); %传输速率(吞吐率)
cap0 = zeros(1,length(SNR)); cap1 = zeros(1,length(SNR)); cap2 = zeros(1,length(SNR)); cap3 = zeros(1,length(SNR)); cap4 = zeros(1,length(SNR));
附录 13
%-------------------------------------------------------- %网络结构
%trelllist1 1/2 编码速率
trellis1 = poly2trellis(3,[5,7]); %trellist2 1/3 编码速率
trellis2 = poly2trellis(3,[1 6 5]);
%----------------------------------------------------------------- %未编码的误码率 2psk modbit0 = pskmod(msg,2); for k = 1 : length(SNR)
y0 = awgn(modbit0,SNR(k),'measured'); %在传输序列中加入AWGN 噪声 demmsg0 = pskdemod(y0,2); %解调 recode0 = reshape(demmsg0',1,[]); [num0,rat0] = biterr(recode0,msg); BER0(k) = rat0; %误码计算
Wrongblock0(k) = Wukuai(msg,recode0); %计算吞吐率 以 r=1/3 2psk 为基准 %(2psk)是其2倍
cap0(k) = (1 - Wrongblock0(k)) * 2; end
%----------------------------------------------------------------------- %编码的误码率 1/2 编码速率 2psk
code1 = convenc(msg,trellis1); %编码 modbit1 = pskmod(code1,2); %调制 for k = 1 : length(SNR)
y1 = awgn(modbit1,SNR(k),'measured'); %在传输序列中加入AWGN 噪声 demmsg1 = pskdemod(y1,2); %解调 recode1 = reshape(demmsg1',1,[]);
14
自适应编码调制技术
tblen = 5; %回潮长度
decoded1 = vitdec(recode1,trellis1,tblen,'cont','hard'); %译码
[num1 ,rat1] = biterr(double(decoded1(tblen+1 : end)),msg(1: end - tblen)); %误码计算 BER1(k) = rat1;
Wrongblock1(k) = Wukuai(double(decoded1(tblen+1 : end)),msg(1: end - tblen)); %计算吞吐率 以 r=1/3 2psk 为基准 %(r = 1/2 2psk)是其1.5倍
cap1(k) = (1 - Wrongblock1(k)) * 1.5; end
%编码的误码率 1/3 编码速率 2psk code2 = convenc(msg,trellis2); modbit2 = pskmod(code2,2); for k = 1 : length(SNR)
y2 = awgn(modbit2,SNR(k),'measured'); %在传输序列中加入AWGN 噪声 demmsg2 = pskdemod(y2,2); %解调 recode2 = reshape(demmsg2',1,[]);
tblen = 5; %回潮长度
decoded2 = vitdec(recode2,trellis2,tblen,'cont','hard'); %译码
[num2 ,rat2] = biterr(double(decoded2(tblen+1 : end)),msg(1: end - tblen)); %误码计算 BER2(k) = rat2;
Wrongblock2(k) = Wukuai(double(decoded2(tblen+1 : end)),msg(1: end - tblen)); %计算吞吐率 以 r=1/3 2psk 为基准 cap2(k) = (1 - Wrongblock2(k)) * 1; end
%编码的误码率 r = 1/2 qpsk 2
code3 = convenc(msg,trellis1); %编码
deccode1 = zeros(1,length(code3)/2); %二进制码变为4进制消息数据 demmsg1 = zeros(1,length(code3)); for i = 1 : length(code3)/2 str1 = int2str(code3(2*i-1)) ; str2 = int2str(code3(2*i)) ;
deccode1(i) = bin2dec(strcat(str1,str2)); end M = 4;
graycode=[0 1 3 2]; %gray编码规则 graymsg = graycode(deccode1+1); %gray映射 for k = 1 : length(SNR)
modbit3 = pskmod(graymsg,M); %基带qpsk 调制
y3 = awgn(modbit3,SNR(k),'measured'); %在传输序列中加入AWGN 噪声
附录
yjie = pskdemod(y3,4); %解调
decmsg = graycode(yjie+1);
for i = 1 : length(decmsg)
temp = dec2bin(decmsg(i),2);
demmsg1(2*i-1) = str2num(temp(1));
demmsg1(2*i) = str2num(temp(2));
end
recode3 = reshape(demmsg1',1,[]);
tblen = 5; %回潮长度
mdecoded3 = vitdec(recode3,trellis1,tblen,'cont','hard'); %译码 15
[num3 ,rat3] = biterr(double(mdecoded3(tblen+1 : end)),msg(1: end - tblen)); %误码计算 BER3(k) = rat3;
Wrongblock3(k) = Wukuai(double(mdecoded3(tblen+1 : end)),msg(1: end - tblen)); %计算吞吐率 以 r=1/3 2psk 为基准
%(r = 1/2 qpsk)是其2倍
cap3(k) = (1 - Wrongblock3(k)) * 2;
end
%编码的误码率 r = 1/2 16qam 4
code4= convenc(msg,trellis1); %编码
demmsg4 = zeros(1,length(code4));
M=16;
x4=reshape(code4,4,length(code4)/4); %将原始的二进制比特序列每四个一组分组,并排列成4行length(code4)/4列的矩阵
xsym=bi2de(x4.','left-msb');
deccode4 = xsym'; %二进制码变为16进制消息数据
%----------------------------------------------------------------------
graycode=[0 1 3 2 6 7 5 4 12 13 15 14 10 11 9 8]; %gray编码规则
ungraycode4=[1 2 4 3 8 7 5 6 16 15 13 14 9 10 12 11] %gray反解码
graymsg = graycode(deccode4+1); %gray映射
for k = 1 : length(SNR)
modbit4 = qammod(graymsg,M); %基带16qam 调制
y4 = awgn(modbit4,SNR(k),'measured'); %在传输序列中加入AWGN 噪声
yjie4 = qamdemod(y4,M); %16qam解调
decmsg4 = ungraycode4(yjie4+1)-1;
for i = 1 : length(decmsg4)
temp = dec2bin(decmsg4(i),4);
demmsg4(4*i-3) = str2num(temp(1));
demmsg4(4*i-2) = str2num(temp(2));
demmsg4(4*i-1) = str2num(temp(3));
16
end 自适应编码调制技术 demmsg4(4*i) = str2num(temp(4));
recode4 = reshape(demmsg4',1,[]);
tblen = 5; %回潮长度
mdecoded4 = vitdec(recode4,trellis1,tblen,'cont','hard'); %译码
[num4 ,rat4] = biterr(double(mdecoded4(tblen+1 : end)),msg(1: end - tblen)); %误码计算 BER4(k) = rat4;
Wrongblock4(k) = Wukuai(double(mdecoded4(tblen+1 : end)),msg(1: end - tblen)); %计算吞吐率 以 r=1/3 2psk 为基准
%(r = 1/2 16qam)是其6倍
cap4(k) = (1 - Wrongblock4(k)) * 6;
end
%计算吞吐量 假设各种调制方式的码元传输速率是一样的,
%以R=1/3 bpsk 调制为基准
%----------------------------------------------------------------------
%画图
length(SNR)
figure(1)
%semilogy(SNR,BER0,'k-',SNR,BER1,'k-s',SNR,BER2,'g-diamond',SNR,BER3,'r--s');
semilogy(SNR,BER0,'k-',SNR,BER1,'k-s',SNR,BER2,'g-diamond',SNR,BER3,'r--s',SNR,BER4,'b--s');
xlabel('SNR/db');
ylabel('BER');
legend('未编码 Bpsk','R=1/2 Bpsk','R=1/3 Bpsk','R=1/2 Qpsk','R=1/2 16QAM');
%legend('未编码2psk',' 卷积编码2psk (R=1/2)',' 卷积编码2psk (R=1/3)',' 卷积编码qpsk (R=1/2)');
title('AMC分析-误码率')
grid on
figure(2)
plot(SNR,Wrongblock0,'k-',SNR,Wrongblock1,'k-s',SNR,Wrongblock2,'g-diamond',SNR,Wrongblock3,'r--s',SNR,Wrongblock4,'b--s');
axis([0 22 0 1]);
xlabel('SNR/db');
ylabel('误块率');
legend('未编码 Bpsk','R=1/2 Bpsk','R=1/3 Bpsk','R=1/2 Qpsk','R=1/2 16QAM');
%legend('卷积编码2psk (R=1/2)',' 卷积编码2psk (R=1/3)',' 卷积编码qpsk (R=1/2)'R=1/2 16QAM'); title('AMC分析-误块率')
grid on
figure(3) 附录 17
plot(SNR,cap0,SNR,cap1,'k-s',SNR,cap2,'g-diamond',SNR,cap3,'r--s',SNR,cap4,'b--s'); axis([0 22 0 6]);
xlabel('SNR/db');
ylabel('传输速率');
legend('未编码 Bpsk','R=1/2 Bpsk','R=1/3 Bpsk','R=1/2 Qpsk','R=1/2 16QAM');
%legend('卷积编码2psk (R=1/2)',' 卷积编码2psk (R=1/3)',' 卷积编码qpsk (R=1/2)'R=1/2 16QAM'); title('AMC分析-传输速率(码元速率一样)')
grid on