1、基于 Matlab 的 MIMO 通信系统仿真北京邮电大学基于Matlab的MIMO通信系统仿真专业:信息工程班级:2011211126姓名:基于 Matlab 的 MIMO 通信系统仿真学号:基于 Matlab 的 MIMO 通信系统仿真目录一、概述 11、课题的研究背景 .12、课程设计的研究目的 .13、MIMO 系统 .1【1】MIMO 的三种主要技术 1【2】MIMO 系统的概述 2【3】MIMO 系统的信道模型 2二、基本原理 31、基本流程 32、MIMO 原理 .33、空时块码 4三、仿真设计 51、流程图 52、主要模块及参数 .63、信源产生 64、信道编码 65、调制 7
2、6、AWGN 信道 .77、输出统计 8四、 程序块设计 81、代码 8五、 仿真结果分析 121、仿真图 122、 结果分析 12基于 Matlab 的 MIMO 通信系统仿真六、重点研究的问题 12七、心得与体会 13八、参考文献 13基于 Matlab 的 MIMO 通信系统仿真1一、概述1、背景MIMO 表示多输入多输出。在第四代移动通信技术标准中被广泛采用,例如 IEEE 802.16e (Wimax),长期演进(LTE)。在新一代无线局域网(WLAN)标准中,通常用于 IEEE 802.11n,但也可以用于其他 802.11 技术。MIMO 有时被称作空间分集,因为它使用多空间通道
3、传送和接收数据。只有站点(移动设备)或接入点(AP)支持 MIMO 时才能部署 MIMO。MIMO 技术可以显著克服信道的衰落,降低误码率。该技术的应用,使空间成为一种可以用于提高性能的资源,并能够增加无线系统的覆盖范围。通常,多径要引起衰落,因而被视为有害因素。然而研究结果表明,对于 MIMO 系统来说,多径可以作为一个有利因素加以利用。MIMO 系统在发射端和接收端均采用多天线(或阵列天线)和多通道,MIMO 的多入多出是针对多径无线信道来说的。传输信息流 s(k)经过空时编码形成 N 个信息子流 ci(k),I=1,N。这 N 个子流由 N 个天线发射出去,经空间信道后由 M 个接收天线
4、接收。多天线接收机利用先进的空时编码处理能够分开并解码这些数据子流,从而实现最佳的处理。2、课程设计的研究目的设计一个基于 Matlab 的 MIMO 通信系统仿真。3、MIMO 系统【1】 MIMO 的三种主要技术当前,MIMO 技术主要通过 3 种方式来提升无线传输速率及品质:(1)空间复用(Spatial Multiplexing):系统将数据分割成多份,分别在发射端的多根天线上发射出去,接收端接收到多个数据的混合信号后,利用不同空间信道间独立的衰落特性,区分出这些并行的数据流。从而达到在相同的频率资源内获取更高数据速率的目的。(2)传输分集技术,以空时编码(Space Time Cod
5、ing)为代表:在发射端对数据流进行联合编码以减小由于信道衰落和噪声所导致的符号错误率。空时编码通过在发射端增加信号的冗余度,使信号在接收端获得分集增益。基于 Matlab 的 MIMO 通信系统仿真2(3)波束成型(Beam Forming):系统通过多根天线产生一个具有指向性的波束,将信号能量集中在欲传输的方向,从而提升信号质量,并减少对其他用户的干扰。【2】 MIMO 系统的概述多输入多输出(Multi-input Multi-output;MIMO)是一种用来描述多天线无线通信系统的抽象数学模型,能利用发射端的多个天线各自独立发送信号,同时在接收端用多个天线接收并恢复原信息。该技术最早
6、是由马可尼于 1908 年提出的,他利用多天线来抑制信道衰落(fading)。根据收发两端天线数量,相对于普通的单输入单输出系统(Single-Input Single-Output,SISO),MIMO 此类多天线技术尚包含早期所谓的“智能型天线”,亦即单输入多输出系统( Single-Input Multi-Output,SIMO)和多输入单输出系统(Multiple-Input Single-Output,MISO)。由于 MIMO 可以在不需要增加带宽或总发送功率耗损(transmit power expenditure)的情况下大幅地增加系统的数据吞吐量(throughput)及发送
7、距离,使得此技术于近几年受到许多瞩目。MIMO 的核心概念为利用多根发射天线与多根接收天线所提供之空间自由度来有效提升无线通信系统之频谱效率,以提升传输速率并改善通信质量。【3】 MIMO 系统的信道模型采用多发送多接收的天线系统, 副发送天线, 副接收天线的 MIMO 的系统信道模tnrn型如图 1.3 所示。用 表示第 i 根发送天线到第 j 根接收天线之间的信道衰落系数, jih,表示 i 副发送天线发送的信号, 为第 j 副接收天线接收到的信号,考虑平坦的衰落信ixjy道则它们之间关系写成矩阵的形式为: , )()(tHxt其中定义 表示 n 发射天线在发射的信号向量; Tntxtxt
8、 k,)(,()21表示 n 接收天线在时间 t 接收的信号向量;nyyt k,(21表示 t 时刻的加性高斯白噪声向量;Tttt k)(,)(,),H 为信道衰落系数矩阵。其中 的幅度服从 Rayleighkjjj knnnhhH,2,1, ,2,211 kjh,分布。基于 Matlab 的 MIMO 通信系统仿真3二、基本原理 1、基本流程2、MIMO 原理核心思想:时间上空时信号处理同空间上分集结合。 时间上空时通过在发送端采用空时码实现: 空时分组、空时格码,分层空时码。 空间上分集通过增加空间上天线分布实现。此举可以把原来对用户来说是有害的无线电波多径传播转变为对用户有利。 MIMO
9、 系统模型:基于 Matlab 的 MIMO 通信系统仿真4MIMO 信道模型分集与复用基于 Matlab 的 MIMO 通信系统仿真5 根据各根天线上发送信息的差别,MIMO 可以分为发射分集技术和空间复用技术。 发射分集:在不同的天线上发射包含同样信息的信号(信号的具体形式不一定完全相同),达到空间分集的效果,起到抗衰落的作用典型代表:空时块码(STBC) 空间复用:在不同的天线上发射不同的信息,获得空间复用增益,从而大大提高系统的容量和频谱利用率典型代表:分层空时码3、空时块码 Alamouti 提出了采用两个发射天线和一个接收天线的系统可以得到采用一个发射天线两个接收天线系统同样的分集
10、增益。 将每 k 个输入字符映射为一个矩阵,矩阵的每行对应在 p 个不同的时间间隔里不同天线上所发送的符号。 2*2 举例:基于 Matlab 的 MIMO 通信系统仿真6三、仿真设计1、流程图2、主要模块及参数3、信源产生 产生独立等概二进制信源 Matlab 函数:randsrc() 编码块长度: 40-6114(3GPP TS36.212 Table 5.1.3-3)基于 Matlab 的 MIMO 通信系统仿真7推荐值:320,1024,2560,5120利用 randsrc()随机产生 0 与 1 的数,利用公式将其变成 1 与-1,即产生信源。4、信道编码Option 1:卷积码(
11、3GPP TS25.212 4.2.3.1)根据要求,卷积码编码器为(3,1,8)编码器,G0=(001101111)转换为八进制为557;G1=(010110011)转换为八进制为 663;G1=(011001001)转换为八进制为 711.卷积码记忆长度为 9.5、调制调制模块基本要求:QPSKQPSK 调制的函数可以利用 matlab 函数库自带的 QPSK 函数进行编写。但是由于 QPSK 是 M=4进行映射的,所以将随机产生的信源利用 reshape 函数变成两列,即 00 映射成,01 映射成,10 映射成,11 映射成。解调时利用 matlab 自带的 demodulate 函数
12、。基于 Matlab 的 MIMO 通信系统仿真86、AWGN 信道Matlab 实现:randn()信噪比与 AWGN 噪声的关系:由于信源经过 QPSK 调制,相当于在两条坐标轴的平面(一条实数轴,一条虚数轴)每一个方向都有随机的高斯白噪声分布,然后各自乘以相应的幅度,将得出的噪声加入QPSK 调制的信号里,得到的便是经过 AWGN 信道的信号。7、输出统计 误码率统计 输出:横坐标-SNR Eb/N0 (Eb/N0 vs Es/N0?)纵坐标-BER(误比特率) ,BLER(误块率) 画图:semilogy(x,y)4、程序块设计1、代码1、MIMO:SNR_dB=0:1:30; %信噪
13、比范围LOOP=500;%- %-信源产生-基于 Matlab 的 MIMO 通信系统仿真9%-for i=1:length(SNR_dB)snr=10(SNR_dB(i)/10); %信噪比转换sgma=sqrt(8/snr/3); %噪声方差error0=0;error1=0;error2=0;error3=0;for a=1:LOOPN=2560; %仿真序列长度 S=randsrc(1,N,0,1); %二进制序列信源 产生n个随机数%-%-有信道编码-%-S00=convolutionalcode(S);%-QPSK调制-s=QPSK(S00); s0=zeros(1,3*N/4);
14、 %将调制后的信息奇偶拆分成两个信息以进行MIMO发射s1=zeros(1,3*N/4);for b1=1:2:(3*N/2)s0(ceil(b1/2)=s(b1);s1(ceil(b1/2)=s(b1+1);endN1=size(s0,2);%-有信道编码(2发2收)-基于 Matlab 的 MIMO 通信系统仿真10h0=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);
15、h3=sqrt(0.5).*(randn(1,N1)+1i.*randn(1,N1);%-接收到的信号(冲激响应与发送序列卷积)-R0=h0.*s0+h1.*s1; %接收信号矢量(不含高斯噪声)R1=-conj(s1).*h0+h1.*conj(s0); %移动通信P166R2=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);r
16、2=(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);for l0=1:3*N/4 %将接收到的信号合并Y0(2*l0-1)=s_0(l0);Y0(2*l0)=s_1(l0);endy0=DEQPSK(Y0); %QPSK解调m0=viterbi(y
17、0); %维特比译码n0,e0=biterr(m0,S);%计算误比特率error0=error0+n0;%有信道编码2发1收基于 Matlab 的 MIMO 通信系统仿真11hr0=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);%接收
18、信号矢量(含复高斯噪声)rN1=(Rr1+sgma.*(randn(1,N1)+1i*randn(1,N1);sr_0=conj(hr0).*rN0+hr1.*conj(rN1);%STBC空时译码sr_1=conj(hr1).*rN0-hr0.*conj(rN1);for l1=1:3*N/4 %将接收到的信号合并Y1(2*l1-1)=sr_0(l1);Y1(2*l1)=sr_1(l1);endy1=DEQPSK(Y1); %QPSK解调m1=viterbi(y1); %维特比译码n1,e1=biterr(m1,S);%计算误比特率error1=error1+n1;%-%无信道编码%-sn=
19、QPSK(S); %QPSK调制for b2=1:2:(N/2) %将调制后的信息奇偶拆分成两个信息以进行MIMO发射sn0(ceil(b2/2)=sn(b2);sn1(ceil(b2/2)=sn(b2+1);end基于 Matlab 的 MIMO 通信系统仿真12N2=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);
20、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)+1
21、i*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);for l2=1:N/4 %将接收到的信号合并Y2(2*l2-1)=sn_0(l2);Y2(2*l2)=sn_1(l2);endy2=DEQPSK(Y2); %QPSK解调y2=y2;n2,e2=biterr(y2,S);%计
22、算误比特率error2=error2+n2;%无信道编码(2发1收)基于 Matlab 的 MIMO 通信系统仿真13hN0=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.*(ra
23、ndn(1,N2)+1i*randn(1,N2);sN_0=conj(hN0).*rN0+hN1.*conj(rN1);sN_1=conj(hN1).*rN0-hN0.*conj(rN1);for l3=1:N/4 %将接收到的信号合并Y3(2*l3-1)=sN_0(l3);Y3(2*l3)=sN_1(l3);endy3=DEQPSK(Y3); %QPSK解调y3=y3;n3,e3=biterr(y3,S);%计算误比特率error3=error3+n3;end BER0(i)=error0/(LOOP*N);BER1(i)=error1/(LOOP*N);BER2(i)=error2/(LO
24、OP*N);BER3(i)=error3/(LOOP*N);endsemilogy(SNR_dB,BER0,-b+);hold on;semilogy(SNR_dB,BER1, r);基于 Matlab 的 MIMO 通信系统仿真14grid on;semilogy(SNR_dB,BER2,-g);grid on;semilogy(SNR_dB,BER3,-.k);grid on;legend(2Tx2R:卷积信道编码,2Tx1R有信道编码,2Tx2R无信道编码,2Tx1R无信道编码);xlabel(SNR/dB);ylabel(BER);2、viterbifunction decodings
25、equence=viterbi(m)trel = poly2trellis(9,557,663,711);tblen=7; %卷积码记忆深度decodingsequence=vitdec(m,trel,tblen,trunc,hard);decodingsequence=decodingsequence;3、QPSKfunction modulatingsignal=QPSK(s)s=s;H=modem.pskmod(M,4,InputType, Bit);modulatingsignal=modulate(H,s); modulatingsignal=modulatingsignal;4、D
26、EQPSK基于 Matlab 的 MIMO 通信系统仿真15function demodulatingsignal=DEQPSK(s)h= modem.pskdemod(M,4,OutputType, Bit);s=s;demodulatingsignal=demodulate(h,s);5、convolutionalcode%卷积码编码器%msg信号%constrainlength约束长度(寄存器数目加一)%codegenerator冲击响应g(转换成八进制)function code=convolutionalcode(msg)constrainlength=9;trel = poly2t
27、rellis(constrainlength,557,663,711);code = convenc(msg,trel);基于 Matlab 的 MIMO 通信系统仿真165、仿真结果分析1、仿真图2、结果分析由误码率仿真图看出在四种信道编码的方法中:横坐标:信噪比 纵坐标:误码率 信噪比在零到五之间时四种方式的误码率都差不多。 在信噪比大于五之后 2x2 卷积信道编码的误码率最低、仿真性能最好。 信噪比大于 8 左右时 2x1 无信道编码的误码率最高、仿真性能最差。 2x1 有信道编码和 2x2 无信道编码的仿真效果差不多。基于 Matlab 的 MIMO 通信系统仿真17 有卷积码的误码率
28、比无卷积码的低,因为卷积码有纠错功能。六、重点研究的问题七、心得与体会这次是我上大学以来觉得最为困难的一次小学期,这一次的任务综合了信道系统编码和通信原理的知识与 Matlab 软件的应用。以前几乎没用过 matlab,所以刚看到这个题目时我简直觉得我从下手。Ppt 看了好多遍也不知道到底做什么。通过翻阅通原课本、上网查阅资料,了解 ppt 上给出的每个函数的功能与用途,经过两个星期终于完成了本次任务。在这次任务重,我碰到了许许多多的问题,其中最复杂的部分就是调制部分的代码与瑞利信道函数部分的代码。借助网上找的资料和在同学的帮助下才完成了这次的任务。这次小学期让我获益匪浅,首先我温习了通信原理的知识,而且学习了 matlab 的一些的用法。最开始的迷茫到最后的完成,感觉万事开头难,只要有足够的决心与毅力,没有什么是完成不了的。希望下一次我可以做的更好。八、参考文献1 吴伟陵,牛凯, 移动通信原理 ,电子工业出版社。2 张梧桐. MIMO 通信技术导论J. 科学周刊, 2013(5).3 周炯槃、庞沁华、续大我、吴伟陵、杨鸿文通信原理 ,北京邮电大学出版社4 啜钢、王文博、常永宇、全庆一移动通信原理与系统 ,北京邮电大学出版社基于 Matlab 的 MIMO 通信系统仿真18