基于Matlab的MIMO通信系统仿真设计Word下载.docx
- 文档编号:6287410
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:17
- 大小:501.91KB
基于Matlab的MIMO通信系统仿真设计Word下载.docx
《基于Matlab的MIMO通信系统仿真设计Word下载.docx》由会员分享,可在线阅读,更多相关《基于Matlab的MIMO通信系统仿真设计Word下载.docx(17页珍藏版)》请在冰点文库上搜索。
(2)传输分集技术,以空时编码(SpaceTimeCoding)为代表:
在发射端对数据流进行联合编码以减小由于信道衰落和噪声所导致的符号错误率。
空时编码通过在发射端增加信号的冗余度,使信号在接收端获得分集增益。
(3)波束成型(BeamForming):
系统通过多根天线产生一个具有指向性的波束,将信号能量集中在欲传输的方向,从而提升信号质量,并减少对其他用户的干扰。
【2】MIMO系统的概述
多输入多输出(Multi-inputMulti-output;
MIMO)是一种用来描述多天线无线通信系统的抽象数学模型,能利用发射端的多个天线各自独立发送信号,同时在接收端用多个天线接收并恢复原信息。
该技术最早是由马可尼于1908年提出的,他利用多天线来抑制信道衰落(fading)。
根据收发两端天线数量,相对于普通的单输入单输出系统(Single-InputSingle-Output,SISO),MIMO此类多天线技术尚包含早期所谓的“智能型天线”,亦即单输入多输出系统(Single-InputMulti-Output,SIMO)和多输入单输出系统(Multiple-InputSingle-Output,MISO)。
由于MIMO可以在不需要增加带宽或总发送功率耗损(transmitpowerexpenditure)的情况下大幅地增加系统的数据吞吐量(throughput)及发送距离,使得此技术于近几年受到许多瞩目。
MIMO的核心概念为利用多根发射天线与多根接收天线所提供之空间自由度来有效提升无线通信系统之频谱效率,以提升传输速率并改善通信质量。
【3】MIMO系统的信道模型
采用多发送多接收的天线系统,
副发送天线,
副接收天线的MIMO的系统信道模型如图1.3所示。
用
表示第i根发送天线到第j根接收天线之间的信道衰落系数,
表示i副发送天线发送的信号,
为第j副接收天线接收到的信号,考虑平坦的衰落信道则它们之间关系写成矩阵的形式为:
其中定义
表示n发射天线在发射的信号向量;
表示n接收天线在时间t接收的信号向量;
表示t时刻的加性高斯白噪声向量;
,H为信道衰落系数矩阵。
其中
的幅度服从Rayleigh分布。
二、基本原理
1、基本流程
2、MIMO原理
核心思想:
时间上空时信号处理同空间上分集结合。
时间上空时通过在发送端采用空时码实现:
空时分组、空时格码,分层空时码。
空间上分集通过增加空间上天线分布实现。
此举可以把原来对用户来说是有害的无线电波多径传播转变为对用户有利。
MIMO系统模型:
MIMO信道模型
分集与复用
⏹根据各根天线上发送信息的差别,MIMO可以分为发射分集技术和空间复用技术。
⏹发射分集:
在不同的天线上发射包含同样信息的信号(信号的具体形式不一定完全相同),达到空间分集的效果,起到抗衰落的作用
典型代表:
空时块码(STBC)
⏹空间复用:
在不同的天线上发射不同的信息,获得空间复用增益,从而大大提高系统的容量和频谱利用率
分层空时码
3、空时块码
⏹Alamouti提出了采用两个发射天线和一个接收天线的系统可以得到采用一个发射天线两个接收天线系统同样的分集增益。
⏹将每k个输入字符映射为一个矩阵,矩阵的每行对应在p个不同的时间间隔里不同天线上所发送的符号。
⏹2*2举例:
三、仿真设计
1、流程图
2、主要模块及参数
3、信源产生
⏹产生独立等概二进制信源
⏹Matlab函数:
randsrc()
⏹编码块长度:
40-6114(3GPPTS36.212Table5.1.3-3)
推荐值:
320,1024,2560,5120
利用randsrc()随机产生0与1的数,利用公式将其变成1与-1,即产生信源。
4、信道编码
Option1:
卷积码(3GPPTS25.2124.2.3.1)
根据要求,卷积码编码器为(3,1,8)编码器,G0=(001101111)转换为八进制为557;
G1=(010110011)转换为八进制为663;
G1=(011001001)转换为八进制为711.卷积码记忆长度为9.
5、调制
调制模块基本要求:
QPSK
QPSK调制的函数可以利用matlab函数库自带的QPSK函数进行编写。
但是由于QPSK是M=4进行映射的,所以将随机产生的信源利用reshape函数变成两列,即00映射成,01映射成,10映射成,11映射成。
解调时利用matlab自带的demodulate函数。
6、AWGN信道
Matlab实现:
randn()
信噪比与AWGN噪声的关系:
由于信源经过QPSK调制,相当于在两条坐标轴的平面(一条实数轴,一条虚数轴)每一个方向都有随机的高斯白噪声分布,然后各自乘以相应的幅度,将得出的噪声加入QPSK调制的信号里,得到的便是经过AWGN信道的信号。
7、输出统计
⏹误码率统计
⏹输出:
横坐标-SNREb/N0(Eb/N0vsEs/N0?
)
纵坐标-BER(误比特率),BLER(误块率)
⏹画图:
semilogy(x,y)
四、程序块设计
1、代码
[1]、MIMO:
SNR_dB=0:
1:
30;
%信噪比范围
LOOP=500;
%------------------------------------------
%--------------信源产生---------------------
%------------------------------------------
fori=1:
length(SNR_dB)
snr=10^(SNR_dB(i)/10);
%信噪比转换
sgma=sqrt(8/snr/3);
%噪声方差
error0=0;
error1=0;
error2=0;
error3=0;
fora=1:
LOOP
N=2560;
%仿真序列长度
S=randsrc(1,N,[0,1]);
%二进制序列信源产生n个随机数
%-------------------------------------------
%------------有信道编码----------------------
S00=convolutionalcode(S);
%--------------QPSK调制---------------------
s=QPSK(S00);
s0=zeros(1,3*N/4);
%将调制后的信息奇偶拆分成两个信息以进行MIMO发射
s1=zeros(1,3*N/4);
forb1=1:
2:
(3*N/2)
s0(ceil(b1/2))=s(b1);
s1(ceil(b1/2))=s(b1+1);
end
N1=size(s0,2);
%--------有信道编码(2发2收)-----------------
h0=sqrt(0.5).*(randn(1,N1)+1i.*randn(1,N1));
%设置信道冲激响应
h1=sqrt(0.5).*(randn(1,N1)+1i.*randn(1,N1));
h2=sqrt(0.5).*(randn(1,N1)+1i.*randn(1,N1));
h3=sqrt(0.5).*(randn(1,N1)+1i.*randn(1,N1));
%------接收到的信号(冲激响应与发送序列卷积)---
R0=h0.*s0+h1.*s1;
%接收信号矢量(不含高斯噪声)
R1=-conj(s1).*h0+h1.*conj(s0);
%移动通信P166
R2=h2.*s0+h3.*s1;
R3=-conj(s1).*h2+h3.*conj(s0);
%通过AWGN信道加入噪声后的冲击序列
r0=(R0+sgma.*(randn(1,N1)+1i*randn(1,N1)));
%接收信号矢量(有噪声)
r1=(R1+sgma.*(randn(1,N1)+1i*randn(1,N1)));
r2=(R2+sgma.*(randn(1,N1)+1i*randn(1,N1)));
r3=(R3+sgma.*(randn(1,N1)+1i*randn(1,N1)));
s_0=conj(h0).*r0+h1.*conj(r1)+conj(h2).*r2+h3.*conj(r3);
%STBC空时译码
s_1=conj(h1).*r0-h0.*conj(r1)+conj(h3).*r2-h2.*conj(r3);
forl0=1:
3*N/4%将接收到的信号合并
Y0(2*l0-1)=s_0(l0);
Y0(2*l0)=s_1(l0);
y0=DEQPSK(Y0);
%QPSK解调
m0=viterbi(y0);
%维特比译码
[n0,e0]=biterr(m0,S);
%计算误比特率
error0=error0+n0;
%有信道编码2发1收
hr0=sqrt(0.5).*(randn(1,N1)+1i.*randn(1,N1));
%瑞利信道函数
hr1=sqrt(0.5).*(randn(1,N1)+1i.*randn(1,N1));
Rr0=hr0.*s0+hr1.*s1;
Rr1=-conj(s1).*hr0+hr1.*conj(s0);
rN0=(Rr0+sgma.*(randn(1,N1)+1i*randn(1,N1)));
%接收信号矢量(含复高斯噪声)
rN1=(Rr1+sgma.*(randn(1,N1)+1i*randn(1,N1)));
sr_0=conj(hr0).*rN0+hr1.*conj(rN1);
sr_1=conj(hr1).*rN0-hr0.*conj(rN1);
forl1=1:
Y1(2*l1-1)=sr_0(l1);
Y1(2*l1)=sr_1(l1);
y1=DEQPSK(Y1);
m1=viterbi(y1);
[n1,e1]=biterr(m1,S);
error1=error1+n1;
%---------------------------
%无信道编码
sn=QPSK(S);
%QPSK调制
forb2=1:
(N/2)%将调制后的信息奇偶拆分成两个信息以进行MIMO发射
sn0(ceil(b2/2))=sn(b2);
sn1(ceil(b2/2))=sn(b2+1);
N2=size(sn0,2);
%无信道编码(2发2收)
hn0=sqrt(0.5).*(randn(1,N2)+1i.*randn(1,N2));
hn1=sqrt(0.5).*(randn(1,N2)+1i.*randn(1,N2));
hn2=sqrt(0.5).*(randn(1,N2)+1i.*randn(1,N2));
hn3=sqrt(0.5).*(randn(1,N2)+1i.*randn(1,N2));
Rn0=hn0.*sn0+hn1.*sn1;
%接收信号矢量(无噪声)
Rn1=-conj(sn1).*hn0+hn1.*conj(sn0);
Rn2=hn2.*sn0+hn3.*sn1;
Rn3=-conj(sn1).*hn2+hn3.*conj(sn0);
rn0=(Rn0+sgma.*(randn(1,N2)+1i*randn(1,N2)));
%接收信号矢量(有噪声)
rn1=(Rn1+sgma.*(randn(1,N2)+1i*randn(1,N2)));
rn2=(Rn2+sgma.*(randn(1,N2)+1i*randn(1,N2)));
rn3=(Rn3+sgma.*(randn(1,N2)+1i*randn(1,N2)));
sn_0=conj(hn0).*rn0+hn1.*conj(rn1)+conj(hn2).*rn2+hn3.*conj(rn3);
sn_1=conj(hn1).*rn0-hn0.*conj(rn1)+conj(hn3).*rn2-hn2.*conj(rn3);
forl2=1:
N/4%将接收到的信号合并
Y2(2*l2-1)=sn_0(l2);
Y2(2*l2)=sn_1(l2);
y2=DEQPSK(Y2);
y2=y2'
;
[n2,e2]=biterr(y2,S);
error2=error2+n2;
%无信道编码(2发1收)
hN0=sqrt(0.5).*(randn(1,N2)+1i.*randn(1,N2));
hN1=sqrt(0.5).*(randn(1,N2)+1i.*randn(1,N2));
RN0=hN0.*sn0+hN1.*sn1;
%发射序列与接收序列的卷积
RN1=-conj(sn1).*hN0+hN1.*conj(sn0);
rN0=(RN0+sgma.*(randn(1,N2)+1i*randn(1,N2)));
rN1=(RN1+sgma.*(randn(1,N2)+1i*randn(1,N2)));
sN_0=conj(hN0).*rN0+hN1.*conj(rN1);
sN_1=conj(hN1).*rN0-hN0.*conj(rN1);
forl3=1:
Y3(2*l3-1)=sN_0(l3);
Y3(2*l3)=sN_1(l3);
y3=DEQPSK(Y3);
y3=y3'
[n3,e3]=biterr(y3,S);
error3=error3+n3;
end
BER0(i)=error0/(LOOP*N);
BER1(i)=error1/(LOOP*N);
BER2(i)=error2/(LOOP*N);
BER3(i)=error3/(LOOP*N);
semilogy(SNR_dB,BER0,'
-b+'
);
holdon;
semilogy(SNR_dB,BER1,'
r'
gridon;
semilogy(SNR_dB,BER2,'
--g'
semilogy(SNR_dB,BER3,'
-.k'
legend('
2Tx2R:
卷积信道编码'
'
2Tx1R有信道编码'
2Tx2R无信道编码'
2Tx1R无信道编码'
xlabel('
SNR/dB'
ylabel('
BER'
[2]、viterbi
functiondecodingsequence=viterbi(m)
trel=poly2trellis(9,[557,663,711]);
tblen=7;
%卷积码记忆深度
decodingsequence=vitdec(m,trel,tblen,'
trunc'
hard'
decodingsequence=decodingsequence'
[3]、QPSK
functionmodulatingsignal=QPSK(s)
s=s'
H=modem.pskmod('
M'
4,'
InputType'
'
Bit'
modulatingsignal=modulate(H,s);
modulatingsignal=modulatingsignal'
[4]、DEQPSK
functiondemodulatingsignal=DEQPSK(s)
h=modem.pskdemod('
OutputType'
demodulatingsignal=demodulate(h,s);
[5]、convolutionalcode
%卷积码编码器
%msg信号
%constrainlength约束长度(寄存器数目加一)
%codegenerator冲击响应g(转换成八进制)
functioncode=convolutionalcode(msg)
constrainlength=9;
trel=poly2trellis(constrainlength,[557,663,711]);
code=convenc(msg,trel);
五、仿真结果分析
1、仿真图
2、结果分析
由误码率仿真图看出在四种信道编码的方法中:
横坐标:
信噪比纵坐标:
误码率
⏹信噪比在零到五之间时四种方式的误码率都差不多。
⏹在信噪比大于五之后2x2卷积信道编码的误码率最低、仿真性能最好。
⏹信噪比大于8左右时2x1无信道编码的误码率最高、仿真性能最差。
⏹2x1有信道编码和2x2无信道编码的仿真效果差不多。
⏹有卷积码的误码率比无卷积码的低,因为卷积码有纠错功能。
六、重点研究的问题
七、心得与体会
这次是我上大学以来觉得最为困难的一次小学期,这一次的任务综合了信道系统编码和通信原理的知识与Matlab软件的应用。
以前几乎没用过matlab,所以刚看到这个题目时我简直觉得我从下手。
Ppt看了好多遍也不知道到底做什么。
通过翻阅通原课本、上网查阅资料,了解ppt上给出的每个函数的功能与用途,经过两个星期终于完成了本次任务。
在这次任务重,我碰到了许许多多的问题,其中最复杂的部分就是调制部分的代码与瑞利信道函数部分的代码。
借助网上找的资料和在同学的帮助下才完成了这次的任务。
这次小学期让我获益匪浅,首先我温习了通信原理的知识,而且学习了matlab的一些的用法。
最开始的迷茫到最后的完成,感觉万事开头难,只要有足够的决心与毅力,没有什么是完成不了的。
希望下一次我可以做的更好。
八、参考文献
[1]吴伟陵,牛凯,《移动通信原理》,电子工业出版社。
[2]张梧桐.MIMO通信技术导论[J].科学周刊,2013(5).
[3]周炯槃、庞沁华、续大我、吴伟陵、杨鸿文《通信原理》,北京邮电大学出版社
[4]啜钢、王文博、常永宇、全庆一《移动通信原理与系统》,北京邮电大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Matlab MIMO 通信 系统 仿真 设计