基于MATLAB的MIMO通信系統(tǒng)仿真_第1頁(yè)
基于MATLAB的MIMO通信系統(tǒng)仿真_第2頁(yè)
基于MATLAB的MIMO通信系統(tǒng)仿真_第3頁(yè)
基于MATLAB的MIMO通信系統(tǒng)仿真_第4頁(yè)
基于MATLAB的MIMO通信系統(tǒng)仿真_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于MATLAB的MIMO通信系統(tǒng)仿真OFDM技術(shù)通過(guò)將頻率選擇性多徑衰落信道在頻域內(nèi)轉(zhuǎn)換為平坦信道,減小了多徑衰落的影響。OFDM技術(shù)如果要提高傳輸速率,則要增加帶寬、發(fā)送功率、子載波數(shù)目,這對(duì)于頻譜資源緊張的無(wú)線通信時(shí)不現(xiàn)實(shí)的。MIMO能夠在空間中產(chǎn)生獨(dú)立并行信道同時(shí)傳輸多路數(shù)據(jù)流,即傳輸速率很高。這些增加的信道容量可以用來(lái)提高信息傳輸速率,也可以通過(guò)增加信息冗余來(lái)提高通信系統(tǒng)的傳輸可靠性。但是MIMO卻不能夠克服頻率選擇性深衰落。所以O(shè)FDM和MIMO這一對(duì)互補(bǔ)的技術(shù)自然走到了一起,現(xiàn)在是3G,未來(lái)也是4G,以及新一代WLAN技術(shù)的核心??傊?,是核心物理層技術(shù)之一。MIMO系統(tǒng)理論:核心

2、思想:時(shí)間上空時(shí)信號(hào)處理同空間上分集結(jié)合。時(shí)間上空時(shí)通過(guò)在發(fā)送端采用空時(shí)碼實(shí)現(xiàn): 空時(shí)分組、空時(shí)格碼,分層空時(shí)碼??臻g上分集通過(guò)增加空間上天線分布實(shí)現(xiàn)。此舉可以把原來(lái)對(duì)用戶來(lái)說(shuō)是有害的無(wú)線電波多徑傳播轉(zhuǎn)變?yōu)閷?duì)用戶有利。MIMO系統(tǒng)模型:可以看到,MIMO模型中有一個(gè)空時(shí)編碼器,有多根天線,其系統(tǒng)模型和上述MIMO系統(tǒng)理論一致。為什么說(shuō)nt>nr,因?yàn)橐话銇?lái)說(shuō),移動(dòng)終端所支持的天線數(shù)目總是比基站端要少。接收矢量為:,即接收信號(hào)為信道衰落系數(shù)X發(fā)射信號(hào)+接收端噪聲MIMO系統(tǒng)容量分析:(附MIMO系統(tǒng)容量分析程序)香農(nóng)公式的信道容量(即信息傳送速率)為:在MIMO中計(jì)算信道容量分兩種情況:

3、未知CSI和已知CSI(CSI即為信道狀態(tài)信息),其公式推導(dǎo)較為復(fù)雜,推導(dǎo)結(jié)果為信道容量是信噪比與接收、發(fā)射天線的函數(shù)。在推導(dǎo)已知CSI中,常用的有waterfilling,即著名的注水原理。但是,根據(jù)相關(guān)文獻(xiàn)資料,通常情況下CSI可以當(dāng)做已知,因?yàn)榘l(fā)送,接收端會(huì)根據(jù)具體信道情況估算CSI的相關(guān)參數(shù)。在這里對(duì)注水原理做一個(gè)簡(jiǎn)單介紹:之所以成為注水原理是因?yàn)槔硐氲淖⑺硎窃谠肼暣蟮臅r(shí)候少分配功率,噪聲小時(shí)多分配功率,最后噪聲+功率=定值,這如果用圖形來(lái)表示,則類似于給水池注水的時(shí)候,水池低的地方就多注水,也就是噪聲小分配的功率就多,故稱這種達(dá)到容量的功率分配方式叫做注水原理。通過(guò)給各個(gè)天線分配

4、不同的發(fā)射功率,增加系統(tǒng)容量。核心思想就是上面所闡述的,信道條件好,則分配更多功率;信道條件差,則分配較少的功率。在MIMO的信道容量當(dāng)中要注意幾個(gè)問(wèn)題:(下面說(shuō)已知CSI都是加入了估計(jì)CSI的算法,并且采用了注水原理。)1. 已知CSI的情況下的信道容量要比發(fā)送端未知CSI的情況下的信道容量高,這是由于當(dāng)發(fā)送端已知CSI的時(shí)候,發(fā)送端可以優(yōu)化發(fā)送信號(hào)的協(xié)方差矩陣。也就是可以通過(guò)注水原理使得信道容量達(dá)到最大。所以在實(shí)際系統(tǒng)當(dāng)中,發(fā)射端必須有效利用CSI(如上述說(shuō)明的通常采用估算的方法),這樣可以優(yōu)化發(fā)送信號(hào)。2. 如果信道信噪比足夠大的時(shí)候,這時(shí)已知和未知CSI相差不大。因?yàn)橐阎狢SI情況下此

5、時(shí)所有的池子都是滿的,此時(shí)發(fā)送天線上的功率得到了最大分配。和未知CSI情況一樣。3. 如果收發(fā)天線數(shù)相等,這時(shí)已知CSI比未知CSI的優(yōu)勢(shì)并不明顯;但是,當(dāng)發(fā)射天線數(shù)大于接收天線數(shù)時(shí),已知CSI的信道容量要明顯高于未知CSI。MIMO和OFDM結(jié)合使用,即MIMO-OFDM系統(tǒng):利用MIMO和OFDM結(jié)合,可以大大提高無(wú)線通信系統(tǒng)的信道容量和傳輸速率,有效抵抗信道衰落和抑制干擾,被認(rèn)為是構(gòu)建寬帶無(wú)線通信系統(tǒng)最關(guān)鍵的物理層傳輸方案。從圖中可以看出,MIMO-OFDM系統(tǒng)中,每根發(fā)射天線的通路上都有一個(gè)OFDM調(diào)制器,每根接收天線上都有一個(gè)OFDM解調(diào)器??諘r(shí)編碼技術(shù)之STBC介紹:在上文的闡述中

6、講到了MIMO通過(guò)時(shí)間上空時(shí)信號(hào)處理和空間上分集結(jié)合實(shí)現(xiàn)??諘r(shí)信號(hào)處理,即空時(shí)編碼技術(shù)目前研究較多的是分層空時(shí)編碼(BLAST),空時(shí)網(wǎng)格編碼(STTC)以及空時(shí)分組編碼(STBC)。其中,空時(shí)分組編碼(STBC)與1998年發(fā)明,應(yīng)用最為廣泛。星座映射的解釋如下:數(shù)字調(diào)制用"星座圖"來(lái)描述,星座圖中定義了一種調(diào)制技術(shù)的兩個(gè)基本參數(shù):1)信號(hào)分布;2)與調(diào)制數(shù)字比特之間的映射關(guān)系。星座圖中規(guī)定了星座點(diǎn)與傳輸比特間的對(duì)應(yīng)關(guān)系,這種關(guān)系稱為"映射",一種調(diào)制技術(shù)的特性可由信號(hào)分布和映射完全定義,即可由星座圖來(lái)完全定義。將輸入的串行二進(jìn)制信息序列經(jīng)串并變換,變

7、成m=log2M個(gè)并行數(shù)據(jù)流,M為星座圖的星座點(diǎn)數(shù)目,每一路的數(shù)據(jù)率是R/m,R是串行輸入碼的數(shù)據(jù)率。每m個(gè)比特對(duì)應(yīng)星座圖上的的一個(gè)星座點(diǎn),比如BPSK調(diào)制,每1個(gè)比特對(duì)應(yīng)一個(gè)星座點(diǎn);QPSK調(diào)制,每2個(gè)比特對(duì)應(yīng)一個(gè)星座點(diǎn);16QAM調(diào)制,每4個(gè)比特對(duì)應(yīng)一個(gè)星座點(diǎn)。一般映射采用格雷碼為映射規(guī)則。在此例中,信源發(fā)送的二進(jìn)制信息比特首先進(jìn)行星座映射。假設(shè)采用4進(jìn)制的調(diào)制星座,有。把從信源來(lái)的二進(jìn)制信息比特每2個(gè)比特分為一組(此例中是x1和x2),對(duì)連續(xù)的兩組比特進(jìn)行星座映射,得到兩個(gè)調(diào)制符號(hào)x1,x2。把這兩個(gè)符號(hào)送入編碼器,并按照如下方式編碼:在第一個(gè)發(fā)送時(shí)刻,符號(hào)在天線1上發(fā)送出去,符號(hào)在天線

8、2上發(fā)送出去。第二個(gè)時(shí)刻,符號(hào)在天線1上發(fā)送出去,符號(hào)在天線2上發(fā)送出去??梢钥闯?,兩幅發(fā)送天線上發(fā)送信號(hào)批次存在著一定的關(guān)系,因此這種空時(shí)碼是基于發(fā)送分集的。兩幅發(fā)送天線上發(fā)送的信號(hào)滿足正交特性。考慮兩個(gè)發(fā)送天線,一個(gè)接收天線的情況:假設(shè)接收端可以完全準(zhǔn)確地估計(jì)出信道的衰落系數(shù)和,在接收端采用最大似然估計(jì),從星座中找出一對(duì)符號(hào),該符號(hào)也就是最終接收端認(rèn)為發(fā)送端發(fā)送的符號(hào)。在程序中,其判決式為:其中,是根據(jù)信道衰落系數(shù)和接收信號(hào)進(jìn)行合并得到的信號(hào)。考慮多接收天線的情況:多天線系統(tǒng)中,發(fā)送端的編碼與傳輸方案和單接收天線系統(tǒng)一樣。只是在接收端的處理變得復(fù)雜,需要對(duì)不同接收天線上接收到的信號(hào)進(jìn)行合并

9、處理。多接收天線下的判決度量可以通過(guò)把各副接收天線上的接受信號(hào)得到的判決度量線性合并得到。判決式如下(該判決式在程序中有體現(xiàn)):最后的系統(tǒng)結(jié)構(gòu)圖:程序:信道容量:close all;clear all;clc;N_loop=100;EbN0=0:5:25;N0=1;Eb=10.(EbN0/10)*N0;normalized=sqrt(1/2);C_norm=zeros(1,length(EbN0);D=zeros(1,N_loop);n=1,2,4,8; W=3*104; for i=1:4 for ee=1:length(EbN0) for s=1:N_loop H=randn(n(i),n

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

11、str(i),' = ',num2str(C_normal); end P=plot(EbN0,C_norm,'r-d'); set(P,'linewidth',2); axis(0 30 0 100); AX=gca; set(AX,'fontsize',14); title('fontsize12bfMIMO ÐŵÀÈÝÁ¿'); X=xlabel('Eb/N_0 dB£¨ÐÅ

12、12;ë±È£©'); set(X,'fontsize',12); Y=ylabel('Capacity bit/s/Hz£¨ÐŵÀÈÝÁ¿£©'); set(Y,'fontsize',12); hold on; grid on;endlegend('n1=1','n2=2','n3=4','n4=8');

13、誤碼率與信噪比關(guān)系:clear allclose allclc %+±äÁ¿+ i=sqrt(-1); IFFT_bin_length=512; carrier_count=100; symbols_per_carrier=66; cp_length=10; addprefix_length=IFFT_bin_length+cp_length; M_psk=4; bits_per_symbol=log2(M_psk); O=1 -2 -3;2+j 1+j 0;3+j 0 1+j;0 -3+j 2+j; co_time=size(O,1); Nt=size

14、(O,2); Nr=2;disp('-start-');num_X=1; for cc_ro=1:co_time for cc_co=1:Nt num_X=max(num_X,abs(real(O(cc_ro,cc_co); end end co_x=zeros(num_X,1); for con_ro=1:co_time for con_co=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); epsilon(con_ro,

15、abs(real(O(con_ro,con_co)=con_co; co_x(abs(real(O(con_ro,con_co),1)=co_x(abs(real(O(con_ro,con_co),1)+1; eta(abs(real(O(con_ro,con_co),co_x(abs(real(O(con_ro,con_co),1)=con_ro; coj_mt(con_ro,abs(real(O(con_ro,con_co)=imag(O(con_ro,con_co); end end end eta=eta.' eta=sort(eta); eta=eta.' carri

16、ers = (1: carrier_count) + (floor(IFFT_bin_length/4) - floor(carrier_count/2);conjugate_carriers=IFFT_bin_length-carriers+2; tx_training_symbols=training_symbol(Nt,carrier_count); baseband_out_length = carrier_count * symbols_per_carrier; snr_min=3; snr_max=15; graph_inf_bit=zeros(snr_max-snr_min+1,

17、2,Nr); graph_inf_sym=zeros(snr_max-snr_min+1,2,Nr); for SNR=snr_min:snr_max clc disp('Wait until SNR=');disp(snr_max); SNR n_err_sym=zeros(1,Nr); n_err_bit=zeros(1,Nr); Perr_sym=zeros(1,Nr); Perr_bit=zeros(1,Nr); re_met_sym_buf=zeros(carrier_count,symbols_per_carrier,Nr); re_met_bit=zeros(ba

18、seband_out_length,bits_per_symbol,Nr); baseband_out=round(rand(baseband_out_length,bits_per_symbol); de_data=bi2de(baseband_out); data_buf=pskmod(de_data,M_psk,0); carrier_matrix=reshape(data_buf,carrier_count,symbols_per_carrier); for tt=1:Nt:symbols_per_carrier data=; for ii=1:Nt tx_buf_buf=carrie

19、r_matrix(:,tt+ii-1); data=data;tx_buf_buf; end XX=zeros(co_time*carrier_count,Nt); 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_count+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).

20、*carrier_count,1)*sign(real(O(con_r,con_c); 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). *carrier_count,1)*sign(real(O(con_r,con_c); end end end end XX=tx_training_symbols;XX; rx_buf=zeros(1,addprefix_length

21、*(co_time+1),Nr); for rev=1:Nr for ii=1:Nt tx_buf=reshape(XX(:,ii),carrier_count,co_time+1); IFFT_tx_buf=zeros(IFFT_bin_length,co_time+1); IFFT_tx_buf(carriers,:)=tx_buf(1:carrier_count,:); IFFT_tx_buf(conjugate_carriers,:)=conj(tx_buf(1:carrier_count,:); time_matrix=ifft(IFFT_tx_buf); time_matrix=t

22、ime_matrix(IFFT_bin_length-cp_length+1):IFFT_bin_length,:);time_matrix; tx=time_matrix(:)' %+ tx_tmp=tx; d=4,5,6,2;4,5,6,2;4,5,6,2;4,5,6,2; a=0.2,0.3,0.4,0.5;0.2,0.3,0.4,0.5;0.2,0.3,0.4,0.5;0.2,0.3,0.4,0.5; for jj=1:size(d,2) copy=zeros(size(tx) ; for kk = 1 + d(ii,jj): length(tx) copy(kk) = a(i

23、i,jj)*tx(kk - d(ii,jj) ; end tx_tmp=tx_tmp+copy; end txch=awgn(tx_tmp,SNR,'measured'); rx_buf(1,:,rev)=rx_buf(1,:,rev)+txch; end %+ rx_spectrum=reshape(rx_buf(1,:,rev),addprefix_length,co_time+1); rx_spectrum=rx_spectrum(cp_length+1:addprefix_length,:); FFT_tx_buf=fft(rx_spectrum); spectrum_

24、matrix=FFT_tx_buf(carriers,:); Y_buf=(spectrum_matrix(:,2:co_time+1); Y_buf=conj(Y_buf'); spectrum_matrix1=spectrum_matrix(:,1); Wk=exp(-2*pi/carrier_count)*i); L=10; p=zeros(L*Nt,1); for jj=1:Nt for l=0:L-1 for kk=0:carrier_count-1 p(l+(jj-1)*L+1,1)=p(l+(jj-1)*L+1,1)+spectrum_matrix1(kk+1,1)*co

25、nj(tx_training_symbols(kk+1,jj)*Wk(-(kk*l); end end end %q=zeros(L*Nt,L*Nt); %for ii=1:Nt % for jj=1:Nt % for l1=0:L-1 % for l2=0:L-1 % for kk=0:carrier_count-1 % q(l2+(ii-1)*L+1,l1+(jj-1)*L+1)= q(l2+(ii-1)*L+1,l1+(jj-1)*L+1)+tx_training_symbols(kk+1,ii)*conj(tx_training_symbols(kk+1,jj)*Wk(-(kk*(-l

26、1+l2); % end % end % end % end %end %h=inv(q)*p; h=p/carrier_count; H_buf=zeros(carrier_count,Nt); for ii=1:Nt for kk=0:carrier_count-1 for l=0:L-1 H_buf(kk+1,ii)=H_buf(kk+1,ii)+h(l+(ii-1)*L+1,1)*Wk(kk*l); end end end H_buf=conj(H_buf'); RRR=; for kk=1:carrier_count Y=Y_buf(:,kk); H=H_buf(:,kk);

27、 for co_ii=1:num_X for co_tt=1:size(eta,2) if eta(co_ii,co_tt)=0 if coj_mt(eta(co_ii,co_tt),co_ii)=0 r_til(eta(co_ii,co_tt),:,co_ii)=Y(eta(co_ii,co_tt),:); a_til(eta(co_ii,co_tt),:,co_ii)=conj(H(epsilon(eta(co_ii,co_tt),co_ii),:); else r_til(eta(co_ii,co_tt),:,co_ii)=conj(Y(eta(co_ii,co_tt),:); a_ti

28、l(eta(co_ii,co_tt),:,co_ii)=H(epsilon(eta(co_ii,co_tt),co_ii),:); end end end end RR=zeros(num_X,1); for iii=1:num_X for ttt=1:size(eta,2) if eta(iii,ttt)=0 RR(iii,1)=RR(iii,1)+r_til(eta(iii,ttt),1,iii)*a_til(eta(iii,ttt),1,iii)*delta(eta(iii,ttt),iii); end end end RRR=RRR;conj(RR'); end r_sym=p

29、skdemod(RRR,M_psk,0); re_met_sym_buf(:,tt:tt+Nt-1,rev)=r_sym; end end re_met_sym=zeros(baseband_out_length,1,Nr); for rev=1:Nr re_met_sym_buf_buf=re_met_sym_buf(:,:,rev); re_met_sym(:,1,rev)= re_met_sym_buf_buf(:); re_met_bit(:,:,rev)=de2bi(re_met_sym(:,1,rev); for con_dec_ro=1:baseband_out_length i

30、f re_met_sym(con_dec_ro,1,rev)=de_data(con_dec_ro,1) n_err_sym(1,rev)=n_err_sym(1,rev)+1; for con_dec_co=1:bits_per_symbol if re_met_bit(con_dec_ro,con_dec_co,rev)=baseband_out(con_dec_ro,con_dec_co) n_err_bit(1,rev)=n_err_bit(1,rev)+1; end end end end %+ graph_inf_sym(SNR-snr_min+1,1,rev)=SNR; grap

31、h_inf_bit(SNR-snr_min+1,1,rev)=SNR; Perr_sym(1,rev)=n_err_sym(1,rev)/(baseband_out_length); graph_inf_sym(SNR-snr_min+1,2,rev)=Perr_sym(1,rev); Perr_bit(1,rev)=n_err_bit(1,rev)/(baseband_out_length*bits_per_symbol); graph_inf_bit(SNR-snr_min+1,2,rev)=Perr_bit(1,rev); %+ end end for rev=1:rev x_sym=graph_inf_sym(:,1,rev); y_sym=graph_inf_sym(:,2,rev); subplot(Nr,1,rev); semilogy(x_sym,y_sym,'b-*'); axis(2 16 0.0001 1); xlabel('ÐÅÔë±È/dB'); ylab

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論