




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
目錄一)基于MATLAB的MIMO通信系統仿真一、基本原理二、仿真三、仿真結果四、仿真結果分析(二)自選習題部分(三)總結與體會(四)參考文獻實訓報告(一)基于MATLAB的MIMO通信系統仿真一、基本原理二、仿真三、仿真結果四、仿真結果分析OFDM技術通過將頻率選擇性多徑衰落信道在頻域內轉換為平坦信道,減小了多徑衰落的影響。OFDM技術如果要提高傳輸速率,則要增加帶寬、發送功率、子載波數目,這對于頻譜資源緊張的無線通信時不現實的。MIMO能夠在空間中產生獨立并行信道同時傳輸多路數據流,即傳輸速率很高。這些增加的信道容量可以用來提高信息傳輸速率,也可以通過增加信息冗余來提高通信系統的傳輸可靠性。但是MIMO卻不能夠克服頻率選擇性深衰落。所以0FDM和MIMO這一對互補的技術自然走到了一起,現在是3G,未來也是4G,以及新一代WLAN技術的核心。總之,是核心物理層技術之一。1、MIMO系統理論:核心思想:時間上空時信號處理同空間上分集結合。時間上空時通過在發送端采用空時碼實現:空時分組、空時格碼,分層空時碼。空間上分集通過增加空間上天線分布實現。此舉可以把原來對用戶來說是有害的無線電波多徑傳播轉變為對用戶有利。2、MIMO系統模型:空時編碼器空時譯碼器空時編碼器空時譯碼器可以看到,MIMO模型中有一個空時編碼器,有多根天線,其系統模型和上述MIMO系統理論一致。為什么說nt〉nr,因為一般來說,移動終端所支持的天線數目總是比基站端要少。接收矢量為:y=Hx+n,即接收信號為信道衰落系數X發射信號+接收端噪聲3、MIMO系統容量分析:(附MIMO系統容量分析程序)香農公式的信道容量(即信息傳送速率)為:C二Blo^(1+S/N)4、在MIMO中計算信道容量分兩種情況:未知CSI和已知CSI(CSI即為信道狀態信息),其公式推導較為復雜,推導結果為信道容量是信噪比與接收、發射天線的函數。在推導已知CSI中,常用的有waterfilling,即著名的注水原理。但是,根據相關文獻資料,通常情況下CSI可以當做已知,因為發送,接收端會根據具體信道情況估算CSI的相關參數。在這里對注水原理做一個簡單介紹:之所以成為注水原理是因為理想的注水原理是在噪聲大的時候少分配功率,噪聲小時多分配功率,最后噪聲+功率=定值,這如果用圖形來表示,則類似于給水池注水的時候,水池低的地方就多注水,也就是噪聲小分配的功率就多,故稱這種達到容量的功率分配方式叫做注水原理。通過給各個天線分配不同的發射功率,增加系統容量。核心思想就是上面所闡述的,信道條件好,則分配更多功率;信道條件差,則分配較少的功率。在MIMO的信道容量當中要注意幾個問題:(下面說已知CSI都是加入了估計CSI的算法,并且采用了注水原理。)已知CSI的情況下的信道容量要比發送端未知CSI的情況下的信道容量高,這是由于當發送端已知CSI的時候,發送端可以優化發送信號的協方差矩陣。也就是可以通過注水原理使得信道容量達到最大。所以在實際系統當中,發射端必須有效利用CSI(如上述說明的通常采用估算的方法),這樣可以優化發送信號。如果信道信噪比足夠大的時候,這時已知和未知CSI相差不大。因為已知CSI情況下此時所有的池子都是滿的,此時發送天線上的功率得到了最大分配。和未知CSI情況一樣。如果收發天線數相等,這時已知CSI比未知CSI的優勢并不明顯;但是,當發射天線數大于接收天線數時,已知CSI的信道容量要明顯高于未知CSI。5、MIMO和OFDM結合使用,即MIMO-OFDM系統:
Nt*NrMIMO-OFDM系統結構框圖利用MIMO和0FDM結合,可以大大提高無線通信系統的信道容量和傳輸速率,有效抵抗信道衰落和抑制干擾,被認為是構建寬帶無線通信系統最關鍵的物理層傳輸方案。從圖中可以看出,MIMO-OFDM系統中,每根發射天線的通路上都有一個OFDM調制器,每根接收天線上都有一個OFDM解調器。空時編碼技術之STBC介紹:在上文的闡述中講到了MIMO通過時間上空時信號處理和空間上分集結合實現。空時信號處理,即空時編碼技術目前研究較多的是分層空時編碼(BLAST),空時網格編碼(STTC)以及空時分組編碼(STBC)。其中,空時分組編碼(STBC)與1998年發明,應用最為廣泛。Alamouti發送分集空時編碼方案星座映射的解釋如下:數字調制用"星座圖"來描述,星座圖中定義了一種調制技術的兩個基本參數:1)信號分布;2)與調制數字比特之間的映射關系。星座圖中規定了星座點與傳輸比特間的對應關系,這種關系稱為"映射",一種調制技術的特性可由信號分布和映射完全定義,即可由星座圖來完全定義。將輸入的串行二進制信息序列經串一并變換,變成m=log2M個并行數據流,M為星座圖的星座點數目,每一路的數據率是R/m,R是串行輸入碼的數據率。每m個比特對應星座圖上的的一個星座點,比如BPSK調制,每1個比特對應一個星座點;QPSK調制,每2個比特對應一個星座點;16QAM調制,每4個比特對應一個星座點。一般映射采用格雷碼為映射規則。22在此例中,信源發送的二進制信息比特首先進行星座映射。假設采用4進制的調制星座,有m=logM=2。把從信源來的二進制信息比特每2個比特分為一組(此例中是xl和x2),2對連續的兩組比特進行星座映射,得到兩個調制符號x1,x2。把這兩個符號送入編碼器,并按照如下方式編碼:X1一X*2X1一X*22X*1在第一個發送時刻,符號X在天線1上發送出去,符號X在天線2上發送出去。第二個
12時刻,符號-X*在天線1上發送出去,符號X*在天線2上發送出去。可以看出,兩幅發送21天線上發送信號批次存在著一定的關系,因此這種空時碼是基于發送分集的。兩幅發送天線上發送的信號滿足正交特性。考慮兩個發送天線,一個接收天線的情況:假設接收端可以完全準確地估計出信道的衰落系數h和h,在接收端采用最大似然估計,從12(\星座中找出一對符號X,X,該符號也就是最終接收端認為發送端發送的符號。在程序中,I12丿其判決式為:(\1?A+d2X,XI11丿=argmin(\1?A+d2X,XI11丿12=argmin、h2+|h|2-1XX其中X1,X2是根據信道衰落系數和接收信號進行合并得到的信號考慮多接收天線的情況:多天線系統中,發送端的編碼與傳輸方案和單接收天線系統一樣。只是在接收端的處理變得復雜,需要對不同接收天線上接收到的信號進行合并處理。多接收天線下的判決度量可以通過把各副接收天線上的接受信號得到的判決度量線性合并得到。判決式如下(該判決式在程序中有體現)Ax=argmin<考慮多接收天線的情況:多天線系統中,發送端的編碼與傳輸方案和單接收天線系統一樣。只是在接收端的處理變得復雜,需要對不同接收天線上接收到的信號進行合并處理。多接收天線下的判決度量可以通過把各副接收天線上的接受信號得到的判決度量線性合并得到。判決式如下(該判決式在程序中有體現)Ax=argmin<1「(j,1j=1+hj,2Ax=argmin<2tr(hj,1j=1hj,2最后的系統結構圖:接收天線1發射天線1接收」天線2V接收天線M最后的系統結構圖:接收天線1發射天線1接收」天線2V接收天線M空時編碼FFTFFT空時譯碼to(N,M)STBC-MIMO-OFDM系統框圖程序:信道容量:closeall;clearall;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*10A4;fori=1:4foree=1:length(EbN0)fors=1:N_loopH=randn(n(i),n(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;endC_avg=sum(D)/N_loop;C_normal=C_avg/W;C_norm(ee)=C_normal;55disp('WhenSNRis',num2str(EbN0(ee)),'dB:C_avg',int2str(i),'=',num2str(C_avg),';C_normal',int2str(i),',num2str(C_normal)]);endP=plot(EbN0,C_norm'r-d');set(P'linewidth',[2]);axis([0300100]);AX=gca;set(AX'fontsize',14);title'\fontsize{12}\bfMIM0BApAEYA^');X=xlabel'Eb/N_O[dB]£^BAOe±E£?');set(X'fontsize',12);Y=ylabel'Capacitybit/s/Hz£^BApAEYA^£?');set(Y'fontsize',12);holdon;gridon;endlegend('n1=1','n2=2','n3=4','n4=8');MIMO信道容量>量容道信—yc^alegend('n1=1','n2=2','n3=4','n4=8');MIMO信道容量>量容道信—yc^a1004020806000101520Eb/N0[dB](信噪比)2530誤碼率與信噪比關系:clearallcloseallclc%+++++++++++++++++++++++++++±2瓦Z++++++++++++++++++++++++++++++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+j1+j0;3+j01+j;0-3+j2+j];co_time=size(O,1);Nt=size(O,2);Nr=2;disp('start');num_X=1;forcc_ro=1:co_timeforcc_co=1:Ntnum_X=max(num_X,abs(real(O(cc_ro,cc_co))));endendco_x=zeros(num_X,1);forcon_ro=1:co_timeforcon_co=1:Ntifabs(real(O(con_ro,con_co)))~=0delta(con_ro,abs(real(O(con_ro,con_co))))=sign(real(O(con_ro,con_co)));epsilon(con_ro,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));endendendeta=eta.';eta=sort(eta);eta=eta.';carriers=(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,2,Nr);graph_inf_sym=zeros(snr_max-snr_min+1,2,Nr);forSNR=snr_min:snr_maxclcdisp('WaituntilSNR=');disp(snr_max);SNRn_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(baseband_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);fortt=1:Nt:symbols_per_carrierdata=[];forii=1:Nttx_buf_buf=carrier_matrix(:,tt+ii-1);data=[data;tx_buf_buf];endXX=zeros(co_time*carrier_count,Nt);forcon_r=1:co_timeforcon_c=1:Ntifabs(real(O(con_r,con_c)))~=0ifimag(O(con_r,con_c))==0XX((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)))...*carrier_count,1)*sign(real(O(con_r,con_c)));elseXX((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)));endendendendXX=[tx_training_symbols;XX];rx_buf=zeros(1,addprefix_length*(co_time+1),Nr);forrev=1:Nrforii=1:Nttx_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=[time_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];forjj=1:size(d,2)copy=zeros(size(tx));forkk=1+d(ii,jj):length(tx)copy(kk)=a(ii,jj)*tx(kk-d(ii,jj));endtx_tmp=tx_tmp+copy;endtxch=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_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);forjj=1:Ntforl=0:L-1forkk=0:carrier_count-1p(l+(jj-1)*L+1,1)=p(l+(jj-1)*L+1,1)+spectrum_matrix1(kk+1,1)*conj(tx_training_symbols(kk+1,jj))*Wk^(-(kk*l));endendend%q=zeros(L*Nt,L*Nt);%forii=1:Nt%forjj=1:Nt%forl1=0:L-1%forl2=0:L-1%forkk=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))*WkA(-(kk*(-l1+l2)));%end%end%end%end%end%h=inv(q)*p;h=p/carrier_count;H_buf=zeros(carrier_count,Nt);forii=1:Ntforkk=0:carrier_count-1forl=0:L-1H_buf(kk+1,ii)=H_buf(kk+1,ii)+h(l+(ii—1)*L+1,1)*Wk^(kk*l);endendendH_buf=conj(H_buf');RRR=[];forkk=1:carrier_countY=Y_buf(:,kk);H=H_buf(:,kk);forco_ii=1:num_Xforco_tt=1:size(eta,2)ifeta(co_ii,co_tt)~=0ifcoj_mt(eta(co_ii,co_tt),co_ii)==0r_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),:));elser_til(eta(co_ii,co_tt),:,co_ii)=conj(Y(eta(co_ii,co_tt),:));a_til(eta(co_ii,co_tt),:,co_ii)=H(epsilon(eta(co_ii,co_tt),co_ii),:);endendendendRR=zeros(num_X,1);foriii=1:num_Xforttt=1:size(eta,2)ifeta(iii,ttt)~=0RR(iii,1)=RR(iii,1)+r_til(eta(iii,ttt),1,iii)*a_til(eta(iii,ttt),1,iii)*delta(eta(iii,ttt),iii);endendendRRR=[RRR;conj(RR')];endr_sym=pskdemod(RRR,M_psk,0);re_met_sym_buf(:,tt:tt+Nt-1,rev)=r_sym;endendre_met_sym=zeros(baseband_out_length,1,Nr);forrev=1:Nrre_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));forcon_dec_ro=1:baseband_out_lengthifre_met_sym(con_dec_ro,1,rev)~=de_data(con_dec_ro,1)n_err_sym(1,rev)=n_err_sym(1,rev)+1;forcon_dec_co=1:bits_per_symbolifre_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;endendendend%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++graph_inf_sym(SNR-snr_min+1,1,rev)=SNR;graph_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);%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++endendforrev=1:revx_sym=graph_inf_sym(:,1,rev);y_sym=graph_inf_sym(:,2,rev);subplot(Nr,1,rev);semilogy(x_sym,y_sym,'b-*');axis([2160.00011]);xlabel('BAOe±E/dB');ylabel('IoAeAE');
gridon%holdonend%holdoff%forrev=1:rev%x_bit=graph_inf_bit(:,1,rev);%y_bit=graph_inf_bit(:,2,rev);%subplot(2,1,2);%semilogy(x_bit,y_bit,'k-v');%axis([2160.00011]);%xlabel('SNR,[dB]');%ylabel('BitErrorProbability');%gridon%holdon%end%holdoffdisp(end'disp(end');%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*beginningof*beginningoffile*****************************%training_symbol.mfunctiontx_training_symbols=training_symbol(Nt,carrier_count)j=sqrt(-1);Wk=exp((-2*pi/carrier_count)*i);training_symbols=[1jj11-j-j-11jj1-1-jj-11jj1-1-j-j-11jj1-1-j-j-11jj1-1...-j-j-11jj1-1-jj-11jj1-1-j-j-11jj1-1-jj-11jj1-1-jj-11...jj1-1-j-j-11jj1-1-j-j-11jj1-1-j-j-11jj1]';tx_training_symbols=[];forii=1:carrier_counttraining_symbols_buf=[];forjj=1:Nttraining_symbols_buf=[training_symbols_buf,WkA(-floor(carrier_count/Nt)*(jj-1)*ii)*training_symbols(ii,1)];endtx_training_symbols=[tx_training_symbols;training_symbols_buf];end%************************endoffile**********************************%************************endof自選習題部分實例二:clear;reg=ones(l,9);coeff=[l,0,0,l,0,l,l,0,0,l];N=2Alength(reg)-1;fork=l:Na_n=mod(sum(reg.*coeff(l:length(coeff)-l)),2);reg=[reg(2:length(reg)),a_n];out(k)=reg(1);endout=2*out-1;forj=0:N-1rho(j+1)=sum(out.*[out(1+j:N),out(1:j)])/N;endj=-N+1:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年項目管理專業人士資格考試挑戰試題及答案
- 橡膠制品在建筑防水材料的耐老化性能考核試卷
- 微生物標本歸類與存儲方法試題及答案
- 2024年微生物試驗設計原則試題及答案
- 游樂設施液壓系統故障診斷與維修考核試卷
- 微生物檢驗技師資格考試的試題設計試題及答案
- 照明器具生產中的設備效能監測與提升方法考核試卷
- 電梯門系統的安全性能評估考核試卷
- 藝龍墻布施工方案
- 管道工程防腐與涂裝技術考核試卷
- (完整word版)Word信紙(A4橫條直接打印版)模板
- DB32/T 4443-2023 罐區內在役危險化學品(常低壓)儲罐管理規范
- 雪球特別版:段永平投資問答錄(投資邏輯篇)
- 民航服務心理學-民航旅客的態度-課件
- 游樂設備(高空攬月)機械結構設計
- 衛輝市陳召北井煤礦礦產資源開采與生態修復方案
- 工程管理筆試題
- 模板支架搭拆安全風險告知卡
- YS/T 751-2011鉭及鉭合金牌號和化學成分
- GB/Z 18620.3-2008圓柱齒輪檢驗實施規范第3部分:齒輪坯、軸中心距和軸線平行度的檢驗
- GB/T 3884.8-2012銅精礦化學分析方法第8部分:鋅量的測定Na2EDTA滴定法
評論
0/150
提交評論