基于MATLAB的MIMO通信系统仿真说明书.doc

上传人:h**** 文档编号:140450 上传时间:2018-07-10 格式:DOC 页数:17 大小:193.50KB
下载 相关 举报
基于MATLAB的MIMO通信系统仿真说明书.doc_第1页
第1页 / 共17页
基于MATLAB的MIMO通信系统仿真说明书.doc_第2页
第2页 / 共17页
基于MATLAB的MIMO通信系统仿真说明书.doc_第3页
第3页 / 共17页
基于MATLAB的MIMO通信系统仿真说明书.doc_第4页
第4页 / 共17页
基于MATLAB的MIMO通信系统仿真说明书.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、 1 目 录 洗手 (一) 基于 MATLAB 的 MIMO通信系统仿真 洗手 一 、 b e ef基本原理 洗手 二 、 b e ef仿真 洗手 三 、 b e ef仿真结果 洗手 四 、 b e ef仿真结果分析 洗手 (二)自选习题部分 洗手 ( 三)总结与体会 洗手 (四)参考文献 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 实训报告 洗手 (一) 基于 MATLAB 的 MIMO通信系统仿真 洗手 基本原理 洗手 仿真 洗手 仿真结果 洗手 仿真结果分析 洗手 洗手 OFDM 技术通过将频率选择性多径衰落信道在频域内转换为平坦信道 , 吃饭 减小了多径衰落的影响 。 洗手

2、OFDM 技术如果要提高传输速率 , 吃饭 则要增加带宽 、 beef发送功率 、 beef子载波数目 , 吃饭 这对于频谱资源紧张的无线通信时不现实的 。 洗手洗手 2 MIMO 能够在空间中产生独立并行信道同时传输多路数据流 , 吃饭 即传输速率很高 。 洗手 这些增加的信道容量可以用来提高信息传输速率 , 吃饭 也可以通过增加信息冗余来提高通信系统的传输可靠性 。 洗手 但是 MIMO却不能够克服频率选择性深衰落 。 洗手洗手 所以 OFDM 和 MIMO 这一对互补的技术自然走到了一起 , 吃饭 现在是 3G, 吃饭 未来也是 4G, 吃饭 以及新一代 WLAN 技术的核心 。 洗手

3、总之 , 吃饭 是核心物理层技术之一 。 洗手洗手 洗手 1、 b e efMIMO 系统理论 : b ef洗手 核心思想 : b eef时间上空时信号处理同空间上分集结合 。 洗手洗手 时间上空时通过在发送端采用空时码实现 : b eef 空时分组 、 b eef空时 格码 , 吃饭 分层空时码 。 洗手洗手 空间上分集通过增加空间上天线分布实现 。 洗手 此举可以把原来对用户来说是有害的无线电波多径传播转变为对用户有利 。 洗手洗手 洗手 2、 b e efMIMO 系统模型 : b ef洗手 空时编码器1x2xnrx11h12h21h22hrnh 1rnh 21Rnh2Rnh1nn Rh

4、空时译码器1y2yRny空时编码器空时译码器洗手 可以看到 , 吃饭 MIMO 模型中有一个空时编码器 , 吃饭 有多根天线 , 吃饭 其系统模型和上述 MIMO 系统理论一致 。 洗手 为什么说 ntnr, 吃饭 因为一般来说 , 吃饭 移动终端所支持的天线数目总是比基站端要少 。 洗手洗手 接收矢量为 : b eef y Hx n, 吃饭 即接收信号为信道衰落系 数 X发射信号 +接收端噪声 洗手 洗手 3、 b e efMIMO 系统容量分析 : b ef洗手 (附 MIMO 系统容量分析程序) 洗手 香农公式的信道容量(即信息传送速率)为 : b eef洗手 2lo g (1 / )C

5、 B S N洗手 4、 b e ef在 MIMO 中计算信道容量分两种情况 : b ef洗手 未知 CSI 和已知 CSI( CSI 即为信道状态信息) , 吃饭 其公式推导较为复杂 , 吃饭 推导结果为信道容量是信噪比与接收 、 b eef发射天线的函数 。 洗手洗手 在推导已知 CSI 中 , 吃饭 常用的有 waterfilling, 吃饭 即著名的注水原理 。 洗手 但是 , 吃饭 根据相关文献资料 ,吃饭 通常情况下 CSI 可以当做已知 , 吃饭 因为发送 , 吃饭 接收端会根据具体信道情况估算 CSI 的相关参数 。洗手洗手 在这里对注水原理做一个简单介绍 : beef之所以成为

6、注水原理是因为理想的注水原理是在噪声大3 的时候少分配功率 , 吃饭 噪声小时多分配功率 , 吃饭 最后噪声 +功率 =定值 , 吃饭 这如果用图形来表示 , 吃饭则类似于给水池注水的时候 , 吃饭 水池低的地方就多注水 , 吃饭 也就是噪声小分配的功率就多 , 吃饭 故称这种达到容量的功率分配方式叫做注水原理 。 洗手 通过给各个天线分配不同的发射 功率 , 吃饭 增加系统容量 。 洗手 核心思想就是上面所阐述的 , 吃饭 信道条件好 , 吃饭 则分配更多功率 ; beef信道条件差 , 吃饭 则分配较少的功率 。 洗手洗手 在 MIMO 的信道容量当中要注意几个问题 : beef(下面说已

7、知 CSI 都是加入了估计 CSI 的算法 , 吃饭并且采用了注水原理 。 洗手 ) 洗手 已知 CSI 的情况下的信道容量要比发送端未知 CSI 的情况下的信道容量高 , 吃饭 这是由于当发送端已知 CSI 的时候 , 吃饭 发送端可以优化发送信号的协方差矩阵 。 洗手 也就是可以通过注水原理使得信道容量达到最大 。 洗手 所以在实际系统当中 , 吃饭 发射端必须有效利 用 CSI(如上述说明的通常采用估算的方法) , 吃饭 这样可以优化发送信号 。 洗手洗手 如果信道信噪比足够大的时候 , 吃饭 这时已知和未知 CSI 相差不大 。 洗手 因为已知 CSI 情况下此时所有的池子都是满的 ,

8、 吃饭 此时发送天线上的功率得到了最大分配 。 洗手 和未知 CSI情况一样 。 洗手洗手 如果收发天线数相等 , 吃饭 这时已知 CSI 比未知 CSI 的优势并不明显 ; beef但是 , 吃饭 当发射天线数大于接收天线数时 , 吃饭 已知 CSI的信道容量要明显高于未知 CSI。 洗手洗手 洗手 5、 b e efMIMO 和 OFDM 结合使用 , 吃饭即 MIMO-OFDM 系统 : b ef洗手 IF F T FFTIF F T FFT输入信号数据处理数据处理输出信号发送天线接收天线Nt* Nr M IM O - OF DM 系统结构框图洗手 利用 MIMO 和 OFDM 结合 ,

9、 吃饭 可以大大提高无线通信系统的信道容量和传输速率 , 吃饭 有效抵抗信道衰落和抑制干扰 , 吃饭 被认为是构建宽带无线通信系统最关键的物理层传输方案 。 洗手洗手 从图中可以看出 , 吃饭 MIMO-OFDM 系统中 , 吃饭 每根发射天线的通路上都有一个 OFDM 调制器 , 吃饭 每根接收天线上都有一个 OFDM 解调器 。 洗手洗手 洗手 空时编码技术之 STBC 介绍 : b ef洗手 在上文的阐述中讲到了 MIMO 通过时间上空时信号处理和空间上分集结合实现 。 洗手 空时信号处理 , 吃饭 即空时编码技术目前研究较多 的是分层空时编码( BLAST) , 吃饭 空时网格编码(

10、STTC)以及空时分组编码( STBC) 。 洗手 其中 , 吃饭 空时分组编码( STBC)与 1998年发明 , 吃饭 应用最为广泛 。 洗手洗手 4 星座映射 编码调制调制二进制信息比特序列 ( x 1 x 2 )X 1 = ( x 1 - x 2 * )天线 2A l a m o u ti 发送分集空时编码方案洗手 星座映射的解释如下 : b eef洗手 数字调制用 “星座图 “来描述 , 吃饭 星座图中定义了一种调制技术的两个基本参数 : beef1)信号分布 ;beef2)与调制数字比特之间的映射关系 。 洗手 星座图中规定了星座点与传输比特间的对应关系 , 吃饭 这种关系称为 “

11、映射 “, 吃饭 一种调制技术的特性可由信号分布和映射完全定义 , 吃饭 即可由星座图来完全定义 。 洗手 将 输入的串行二进制信息序列经串并变换 , 吃饭 变成 m=log2M 个并行数据流 , 吃饭 M 为星座图的星座点数目 , 吃饭 每一路的数据率是 R/m,R 是串行输入码的数据率 。 洗手 每 m个比特对应星座图上的的一个星座点 , 吃饭 比如 BPSK 调制 , 吃饭 每 1 个比特对应一个星座点 ; beefQPSK 调制 , 吃饭 每 2 个比特对应一个星座点 ; beef16QAM 调制 , 吃饭 每 4 个比特对应一个星座点 。 洗手 一般映射采用格雷码为映射规则 。 洗手

12、 洗手 在此例中 , 吃饭 信源发送的二进制信息比特首先进行星座映射 。 洗手 假设采用 4 进制的调制星座 , 吃饭有 2log 2mM。 洗手 把从信源来的二进制信息比特每 2个比特分为一组(此例中是 x1和 x2) ,吃饭 对连续的两组比特进行星座映射 , 吃饭 得到两个调制符号 x1,x2。 洗手 把这两个符号送入编码器 , 吃饭 并按照如下方式编码 : b eef洗手 12*21xxxx洗手 在第一个发送时刻 , 吃饭 符号 1x 在天线 1 上发送出去 , 吃饭 符号 2x 在天线 2 上发送出去 。 洗手 第二个时刻 ,吃饭 符号 *2x 在天线 1 上发送出去 , 吃饭 符号

13、*1x 在天线 2 上发送出去 。 洗手 可以看出 , 吃饭 两幅发送天线上发送信号批次存在着一定的关系 , 吃饭 因此这种空时码是基于发送分集的 。 洗手洗手 两幅发送天线上发送的信号满足正交特性 。 洗手洗手 洗手 考虑两个发送天线 , 吃饭一个接收天线的情况 : b ef洗手 假设接收端可以完全准确地估计出信道的衰落系数 1h 和 2h , 吃饭 在接收端采用最大似然估计 , 吃饭从星座中找出一对符号12,xx, 吃饭 该符号也就是最终接收端认为发送端发送的符号 。 洗手 在程序中 , 吃饭 其判决式为 : beef洗手 5 2 22 21 1 2 1 1 1a r g m in 1 ,

14、x h h x d x x 洗手 2 22 22 1 2 2 2 2a r g m in 1 ,x h h x d x x 洗手 其中 1x , 吃饭2x 是根据信道衰落系数和接收信号进行合并得到的信号 。 洗手洗手 洗手 考虑多接收天线的情况 : b ef洗手 多天线系统中 , 吃饭 发送端的编码与传输方案和单接收天线系统一样 。 洗手 只是在接收端的处理变得复杂 , 吃饭 需要对不同接收天线上接收到的信号进行合并处理 。 洗手 多接收天线下的判决度量可以通过把各副接收天线上的接受信号得到的判决度量线性合并得到 。 洗手 判决式如下(该判决式在程序中有体现) : b eef洗手 2 22 2

15、1 ,1 , 2 1 1 11a r g m i n 1 ,nr jjjx h h x d x x 洗手 2 22 22 ,1 , 2 2 2 21a r g m i n 1 ,nr jjjx h h x d x x 洗手 最后的系统结构图 : b ef洗手 IF F TIF F TIF F TM IM O 频率选择性信道FFTFFTFFT空时编码发射天线 1发射天线2发射天线 N接收天线 1接收天线 2接收天线 M空时译码( N,M ) S T B C - M I M O - OF DM 系统框图洗手 程序 : b ef洗手 信道容 量 : bef洗手 close all;b eef洗手 c

16、lear all;b eef洗手 clc;b eef洗手 N_loop=100;b eef洗手 EbN0=0:5:25;b eef洗手 6 N0=1;b eef洗手 Eb=10.(EbN0/10)*N0;b eef洗手 normalized=sqrt(1/2);b eef洗手 C_norm=zeros(1,length(EbN0);b eef洗手 D=zeros(1,N_loop);b eef洗手 n=1,2,4,8;b eef 洗 手 W=3*104;b eef 洗手 for i=1:4 洗手 for ee=1:length(EbN0) 洗手 for s=1:N_loop 洗手 H=rand

17、n(n(i),n(i)+j*randn(n(i),n(i);b eef洗手 Q=H*H;b eef洗手 m=n(i);b eef洗手 I=eye(m,m);b eef洗手 SNR=Eb(ee)/N0;b eef洗手 C=W*log2(det(I+SNR/n(i)*Q);b eef 洗手 D(s)=C;b eef洗手 end 洗手 C_avg=sum(D)/N_loop;b eef洗手 C_normal=C_avg/W;b eef洗手 C_norm(ee)=C_normal;b eef洗手 disp(When SNR is ,num2str(EbN0(ee),dB: C_avg,int2str(

18、i), = ,num2str(C_avg),;bef C_normal ,int2str(i), = ,num2str(C_normal);b eef 洗手 end 洗手 P=plot(EbN0,C_norm,r-d);b eef洗手 set(P,linewidth,2);b eef洗手 axis(0 30 0 100);b eef洗手 AX=gca;b eef洗手 set(AX,fontsize,14);b eef洗手 title(fontsize12bfMIMO );b eef洗手 X=xlabel(Eb/N_0 dB);b eef洗手 set(X,fontsize,12);b eef洗手

19、 Y=ylabel(Capacity bit/s/Hz);b eef洗手 set(Y,fontsize,12);b eef洗手 hold on;b eef洗手 grid on;b eef洗手 end 洗手 legend(n1=1,n2=2,n3=4,n4=8);b eef洗手 7 0 5 10 15 20 25 30020406080100M I M O 信道容量E b / N0 d B (信噪比)Capacity bit/s/Hz(信道容量)n 1 = 1n 2 = 2n 3 = 4n 4 = 8洗手 洗手 洗手 洗手 洗手 误码率与信噪比关系 : beef洗手 clear all 洗手 c

20、lose all 洗手 clc 洗手 洗手 %+ 洗手 i=sqrt(-1);b eef 洗手 IFFT_bin_length=512;b eef carrier_count=100;b eef 洗手 symbols_per_carrier=66;b eef 洗手 cp_length=10;b eef 洗手 addprefix_length=IFFT_bin_length+cp_length;b eef 洗手 M_psk=4;b eef 洗手 bits_per_symbol=log2(M_psk);b eef 洗手 O=1 -2 -3;b eef2+j 1+j 0;b eef3+j 0 1+j

21、;b eef0 -3+j 2+j;beef 洗手 co_time=size(O,1);bef 洗手 Nt=size(O,2);b eef 洗手 Nr=2;b eef洗手 disp(-start-);b eef洗手 num_X=1;b eef 洗手 8 for cc_ro=1:co_time 洗手 for cc_co=1:Nt 洗手 num_X=max(num_X,abs(real(O(cc_ro,cc_co);b eef 洗手 end 洗手 end 洗手 洗手 co_x=zeros(num_X,1);b eef 洗手 洗手 for con_ro=1:co_time 洗手 for con_co=

22、1:Nt 洗手 if abs(real(O(con_ro,con_co)=0 洗手 delta(con_ro,abs(real(O(con_ro,con_co)=sign(real(O(con_ro,con_co);b eef 洗手 epsilon(con_ro,abs(real(O(con_ro,con_co)=con_co;b eef 洗手 co_x(abs(real(O(con_ro,con_co),1)=co_x(abs(real(O(con_ro,con_co),1)+1;b eef 洗手 eta(abs(real(O(con_ro,con_co),co_x(abs(real(O(c

23、on_ro,con_co),1)=con_ro;b eef 洗手 coj_mt(con_ro,abs(real(O(con_ro,con_co)=imag(O(con_ro,con_co);b eef 洗手 end 洗手 end 洗手 end 洗手 洗手 eta=eta.;bef 洗手 eta=sort(eta);b eef 洗手 eta=eta.;b eef 洗手 carriers = (1: carrier_count) + (floor(IFFT_bin_length/4) - floor(carrier_count/2);b eef洗手 conjugate_carriers=IFFT_

24、bin_length-carriers+2;bef 洗手 tx_training_symbols=training_symbol(Nt,carrier_count);b eef 洗手 baseband_out_length = carrier_count * symbols_per_carrier;b eef 洗手 洗手 snr_min=3;b eef 洗手 snr_max=15;b eef 洗手 graph_inf_bit=zeros(snr_max-snr_min+1,2,Nr);bef graph_inf_sym=zeros(snr_max-snr_min+1,2,Nr);b eef 洗

25、手 洗手 for SNR=snr_min:snr_max 洗手 9 clc 洗手 disp(Wait until SNR=);b eefdisp(snr_max);bef 洗手 SNR 洗手 n_err_sym=zeros(1,Nr);b eef 洗手 n_err_bit=zeros(1,Nr);b eef 洗手 Perr_sym=zeros(1,Nr);b eef 洗手 Perr_bit=zeros(1,Nr);b eef 洗手 re_met_sym_buf=zeros(carrier_count,symbols_per_carrier,Nr);b eef 洗手 re_met_bit=zer

26、os(baseband_out_length,bits_per_symbol,Nr);b eef 洗手 洗手 baseband_out=round(rand(baseband_out_length,bits_per_symbol);b eef 洗手 de_data=bi2de(baseband_out);b eef 洗手 data_buf=pskmod(de_data,M_psk,0);b eef 洗手 carrier_matrix=reshape(data_buf,carrier_count,symbols_per_carrier);bef 洗手 for tt=1:Nt:symbols_pe

27、r_carrier 洗手 data=;b eef 洗手 for ii=1:Nt 洗手 tx_buf_buf=carrier_matrix(:,tt+ii-1);b eef 洗手 data=data;b eeftx_buf_buf;bef 洗手 end 洗手 洗手 XX=zeros(co_time*carrier_count,Nt);b eef 洗手 for con_r=1:co_time 洗手 for con_c=1:Nt 洗手 if abs(real(O(con_r,con_c)=0 洗手 if imag(O(con_r,con_c)=0 洗手 XX(con_r-1)*carrier_cou

28、nt+1:con_r*carrier_count,con_c)=data(abs(real(O(con_r,con_c)-1)*carrier_count+1:abs(real(O(con_r,con_c). 洗手 *carrier_count,1)*sign(real(O(con_r,con_c);b eef 洗手 else 洗手 XX(con_r-1)*carrier_count+1:con_r*carrier_count,con_c)=conj(data(abs(real(O(con_r,con_c)-1)*carrier_count+1:abs(real(O(con_r,con_c).

29、 洗手 *carrier_count,1)*sign(real(O(con_r,con_c);b eef 洗手 end 洗手 end 洗手 end 洗手 end 洗手 洗手 XX=tx_training_symbols;b eefXX;bef 洗手 洗手 10 rx_buf=zeros(1,addprefix_length*(co_time+1),Nr);b eef 洗手 for rev=1:Nr 洗手 for ii=1:Nt 洗手 tx_buf=reshape(XX(:,ii),carrier_count,co_time+1);b eef 洗手 IFFT_tx_buf=zeros(IFFT_

30、bin_length,co_time+1);b eef 洗手 IFFT_tx_buf(carriers,:)=tx_buf(1:carrier_count,:);b eef 洗手 IFFT_tx_buf(conjugate_carriers,:)=conj(tx_buf(1:carrier_count,:);b eef 洗手 time_matrix=ifft(IFFT_tx_buf);b eef 洗手 time_matrix=time_matrix(IFFT_bin_length-cp_length+1):IFFT_bin_length,:);b eeftime_matrix;bef 洗手 t

31、x=time_matrix(:);b eef 洗手 %+洗手 tx_tmp=tx;b eef 洗手 d=4,5,6,2;b eef4,5,6,2;bef4,5,6,2;bef4,5,6,2;bef 洗手 a=0.2,0.3,0.4,0.5;b eef0.2,0.3,0.4,0.5;bef0.2,0.3,0.4,0.5;bef0.2,0.3,0.4,0.5;bef 洗手 for jj=1:size(d,2) 洗手 copy=zeros(size(tx) ;b eef 洗手 for kk = 1 + d(ii,jj): length(tx) 洗手 copy(kk) = a(ii,jj)*tx(kk

32、 - d(ii,jj) ;b eef 洗手 end 洗手 tx_tmp=tx_tmp+copy;b eef 洗手 end 洗手 洗手 txch=awgn(tx_tmp,SNR,measured);b eef 洗手 rx_buf(1,:,rev)=rx_buf(1,:,rev)+txch;b eef 洗手 end 洗手 %+ 洗手 rx_spectrum=reshape(rx_buf(1,:,rev),addprefix_length,co_time+1);b eef 洗手 rx_spectrum=rx_spectrum(cp_length+1:addprefix_length,:);b eef

33、 洗手 FFT_tx_buf=fft(rx_spectrum);b eef 洗手 spectrum_matrix=FFT_tx_buf(carriers,:);b eef 洗手 Y_buf=(spectrum_matrix(:,2:co_time+1);b eef 洗手 Y_buf=conj(Y_buf);b eef 洗手 洗手 spectrum_matrix1=spectrum_matrix(:,1);b eef 洗手 Wk=exp(-2*pi/carrier_count)*i);b eef 洗手 L=10;b eef 洗手 洗手 p=zeros(L*Nt,1);b eef 洗手 for jj=1:Nt 洗手 for l=0:L-1 洗手

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。