資源簡介
多用化下行MIMO 預處理塊對角化BD算法的完整代碼,希望可以幫助到你的學習運用
代碼片段和文件信息
%算法Block?Diagonalized?Channel?Inversion?for?Multiuser?MIMO?Downlink
%塊對角信道逆轉,僅發(fā)送端做處理。接收端沒有參與處理。
%[2?2?4]情況共兩個用戶,每個用戶2個接收天線
clear?all;
close?all;
%----------------仿真的參數配置-------------------------------
Nt=4;
Nr=[22];
K=2;
num_symbol=Nr(1);%一個符號時間內對每個用戶來說發(fā)送的符號數
M=4;
num_bit=log2(M)*num_symbol;%一個符號持續(xù)時間一個符號所包含的比特數
N_loop=15;
total_num_bit=2*num_bit*N_loop;%在所有仿真循環(huán)內,所有用戶總共收到的比特數
SNR_dB=[0?2?4?6?8?10?12?14?16?18?20?];
SNR=?10.^(SNR_dB./10);
Eb=1/(2*num_bit);%每個比特能量其中假定總共的發(fā)送功率為1
No?=?Eb?./?SNR;?
nstdv?=?sqrt(No./2);?%計算噪聲功率(方差)
BER=zeros(1length(SNR_dB));
%---------------仿真開始-----------------------------
%----------產生發(fā)送符號----------------
for?loop=1:N_loop;%信道實現次數循環(huán)
????%----------產生各個用戶的發(fā)送信號(由比特序列開始,格雷映射,調制)------------
????d1=zeros(Nr(1)1);
????bits1=rand(1num_bit)>0.5;%生成比特序列,進行格雷映射
????for?i=1:num_symbol;
????????b1=bits1(2*i-1);
????????b2=bits1(2*i);
????????if?b1==0&b2==0;
????????????d1(i)=0;
????????elseif??b1==0&b2==1;
????????????d1(i)=1;
????????elseif??b1==1&b2==0;
????????????d1(i)=2;
????????else?d1(i)=3;
????????end;
????end;
????d2=zeros(Nr(2)1);
????bits2=rand(1num_bit)>0.5;
????for?i=1:num_symbol;
????????b1=bits2(2*i-1);
????????b2=bits2(2*i);
????????if?b1==0&b2==0;
????????????d2(i)=0;
????????elseif??b1==0&b2==1;
????????????d2(i)=1;
????????elseif??b1==1&b2==0;
????????????d2(i)=2;
????????else?d2(i)=3;
????????end;
????end;
????%-----------4QAM調制產生符號---------------
????s1=qammod(d1M);
????s2=qammod(d2M);
%------------分別產生各個用戶的信道矩陣,信道矩陣的各個元素為獨立復高斯分布,每個元素的功率為1-------------------
????normalized=1/sqrt(2);?%歸一化
????H1=randn(24)+j*randn(24);?%用戶1信道矩陣
????H1=normalized*H1;?
????H2=randn(24)+j*randn(24);?%用戶2信道矩陣
????H2=normalized*H2;?
%-------------BD算法的開始---------------
???[USV]?=?svd(H2);
???F1=V(:3:4);%計算預編碼矩陣
???[USV]?=?svd(H1);
???F2=V(:3:4);
%-----------等效信道(信
評論
共有 條評論