资源简介

Channel Inversion for Multiuser MIMO with MMSE criteria. It picks 4 active users out of 20 users and make a MU-MIMO layout for Multi-user operation.

资源截图

代码片段和文件信息

% multi_user_MIMO.m
clear all; clc; clf
mode=1; % Set 0/1 for channel inversion or regularized channel inversion
N_frame=20 
N_packet=80 % Number of frames/packet and Number of packets
b=2 %?
NT=2 % No of Tx Antennas
N_user=2 % Total users
N_act_user=2 %Active users are 4
I=eye(N_act_userNT) % 4 x 4 Eye matrix generation (Active users x Tx Antennas)
N_pbits = N_frame*NT*b % Number of bits in a packet
N_tbits = N_pbits*N_packet % Number of total bits
SNRdBs = [0:5:30] % SNR range
sq2=sqrt(2)  % square root of 2
for i_SNR=1:length(SNRdBs)
SNRdB=SNRdBs(i_SNR) ;
N_ebits = 0 ;
rand(‘seed‘1) ;
randn(‘seed‘1);
sigma2 = NT*0.5*10^(-SNRdB/10) ;
sigma = sqrt(sigma2);
for i_packet=1:N_packet
msg_bit = randint(1N_pbits); % Bit generation
symbol = QPSK_mapper(msg_bit).‘ ;% bits to symbols
x = reshape(symbolNTN_frame); % arranging sysmbols
for i_user=1:N_user
H(i_user:) = (randn(1NT)+j*randn(1NT))/sq2; % ith user channel (one by one)
Channel_norm(i_user)=norm(H(i_user:)); % norm calculation (one by one)
end
[Ch_normIndex]=sort(Channel_norm‘descend‘);
H_used = H(Index(1:N_act_user):);
temp_W = H_used‘*inv(H_used*H_used‘+(mode==1)*sigma2*I);
beta = sqrt(NT/trace(temp_W*temp_W‘)); %  Beta=underroot(No of tx antannas/trace of inv(H)*(inv(H))^H
W = beta*temp_W;   %  Beta into MMSE matrix it is used to distribute equal power to tx antennas
Tx_signal = W*x; % Pre-equalized signal at Tx
%%%%%%%%%%%%% Channel and Noise %%%%%%%%%%%%%
Rx_signal = H_used*Tx_signal + ...
sigma*(randn(N_act_userN_frame)+j*randn(N_act_userN_frame));
%%%%%%%%%%%%%% Receiver %%%%%%%%%%%%%%%%%%%%%
x_hat = Rx_signal/beta;  %Rx signal is divided by Beta
symbol_hat = reshape(x_hatNT*N_frame1);
symbol_sliced = QPSK_slicer(symbol_hat);
demapped=QPSK_demapper(symbol_sliced);
N_ebits = N_ebits + sum(msg_bit~=demapped);
end
BER(i_SNR) = N_ebits/N_tbits
end
semilogy(SNRdBsBER‘-o‘‘LineWidth‘2) grid on

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1945  2012-10-19 08:41  Matrix_inversion_Multiuser_MIMO\Matrix_inversion_Pre_coding_debug.m

     文件        214  2012-10-04 10:12  Matrix_inversion_Multiuser_MIMO\QPSK_demapper.m

     文件        198  2012-10-04 10:10  Matrix_inversion_Multiuser_MIMO\QPSK_mapper.m

     文件        282  2012-10-04 10:11  Matrix_inversion_Multiuser_MIMO\QPSK_slicer.m

     目录          0  2012-10-19 08:42  Matrix_inversion_Multiuser_MIMO

----------- ---------  ---------- -----  ----

                 2639                    5


评论

共有 条评论