[Massive MIMO Detection] Research on large-scale MU-MIMO infinite norm detection based on ADMM with Matlab code

?About the author: A Matlab simulation developer who loves scientific research. He cultivates his mind and improves his technology simultaneously. For cooperation on MATLAB projects, please send a private message.

Personal homepage: Matlab Research Studio

Personal credo: Investigate things to gain knowledge.

For more complete Matlab code and simulation customization content, click

Intelligent optimization algorithm Neural network prediction Radar communication Wireless sensor Power system

Signal processing Image processing Path planning Cellular automaton Drone

Content introduction

In today’s communication field, multi-user multiple input multiple output (MU-MIMO) systems have become an important part of wireless communication networks. The emergence of MU-MIMO technology enables base stations to communicate with multiple users at the same time, thereby significantly improving system capacity and performance. However, the infinite norm detection problem in MU-MIMO systems has always been a challenging research direction.

Infinity norm detection refers to estimating the infinite norm of the transmitted signal from the received signal in the MU-MIMO system. Due to the presence of multiple users and multiple antennas in MU-MIMO systems, the infinite norm detection problem becomes very complex. To solve this problem, researchers have proposed many different methods and algorithms.

One of the widely used methods is the infinite norm detection algorithm based on the alternating direction multiplier method (ADMM). ADMM is an iterative algorithm that is solved by decomposing the original problem into several sub-problems. In the MU-MIMO system, the ADMM algorithm can transform the infinite norm detection problem into a constrained convex optimization problem, and then solve the problem iteratively to obtain the optimal solution.

The advantage of the ADMM algorithm is that it has better convergence and adaptability. It can effectively solve the infinite norm detection problem in MU-MIMO systems and has high performance in practical applications. In addition, the ADMM algorithm can be combined with other optimization algorithms to further improve detection performance.

However, although the ADMM algorithm has great potential in infinite norm detection problems, there are still some challenges and limitations. One of the challenges is the complexity and computational overhead of the algorithm. Since the number of antennas and users in MU-MIMO systems is usually large, the ADMM algorithm needs to deal with large-scale optimization problems, which will lead to an increase in computational complexity. In addition, the convergence speed of the ADMM algorithm may also be affected by system parameters and channel conditions.

Part of the code

 disp('using default simulation settings and parameters...')</code><code> </code><code> % set default simulation parameters</code><code> par.suffix = \ 'exp'; % simulation name suffix: 'exp' experimental</code><code> par.runId = 0; % simulation ID (used to reproduce results)</code><code> par.MR = 64 ; % receive antennas</code><code> par.MT = 16; % user terminals (set not larger than MR!)</code><code> par.mod = '64QAM'; % modulation type: \ 'BPSK','QPSK','16QAM','64QAM'</code><code> par.simName = ['ERR_' num2str(par.MR) 'x' num2str(par.MT) '_' par.mod '_' par.suffix] ; % simulation name (used for saving results)</code><code> par.trials = 100; % number of Monte -Carlo trials (transmissions)</code><code> par.SNRdB_list = 10:2:20; % list of SNR [dB] values to be simulated</code><code> par.detector = {'Conjugate- Gradient','Neumann','Gauss-Seidel','OCDBOX','ADMIN'}; % define detector(s) to be simulated</code><code> % algorithm specific </code><code> par.alg.maxiter = 3;</code><code>else</code><code> </code><code> disp('use custom simulation settings and parameters... ')</code><code> par = varargin{1}; % only argument is par structure</code><code> </code><code>end</code><code>?</code> <code>% -- initialization</code><code>?</code><code>% use runId random seed (enables reproducibility)</code><code>% rng(par.runId);</code> <code>?</code><code>% set up Gray-mapped constellation alphabet (according to IEEE 802.11)</code><code>switch (par.mod)</code><code> case 'BPSK\ '</code><code> par.symbols = [ -1 1 ];</code><code> case 'QPSK'</code><code> par.symbols = [ -1-1i,-1 + 1i, ...</code><code> + 1-1i, + 1 + 1i ];</code><code> case '16QAM'</code><code> par.symbols = [ - 3-3i,-3-1i,-3 + 3i,-3 + 1i, ...</code><code> -1-3i,-1-1i,-1 + 3i,-1 + 1i, . ..</code><code> + 3-3i, + 3-1i, + 3 + 3i, + 3 + 1i, ...</code><code> + 1-3i, + 1-1i, + 1 + 3i, + 1 + 1i ];</code><code> case '64QAM'</code><code> par.symbols = [ -7-7i,-7-5i,-7-1i, -7-3i,-7 + 7i,-7 + 5i,-7 + 1i,-7 + 3i, ...</code><code> -5-7i,-5-5i,-5-1i, -5-3i,-5 + 7i,-5 + 5i,-5 + 1i,-5 + 3i, ...</code><code> -1-7i,-1-5i,-1-1i, -1-3i,-1 + 7i,-1 + 5i,-1 + 1i,-1 + 3i, ...</code><code> -3-7i,-3-5i,-3-1i, -3-3i,-3 + 7i,-3 + 5i,-3 + 1i,-3 + 3i, ...</code><code> + 7-7i, + 7-5i, + 7-1i, + 7-3i, + 7 + 7i, + 7 + 5i, + 7 + 1i, + 7 + 3i, ...</code><code> + 5-7i, + 5-5i, + 5-1i, + 5-3i, + 5 + 7i, + 5 + 5i, + 5 + 1i, + 5 + 3i, ...</code><code> + 1-7i, + 1-5i, + 1-1i, + 1-3i, + 1 + 7i, + 1 + 5i, + 1 + 1i, + 1 + 3i, ...</code><code> + 3-7i, + 3-5i, + 3-1i, + 3-3i, + 3 + 7i, + 3 + 5i, + 3 + 1i, + 3 + 3i ];</code><code> </code><code>end</code><code>?</code><code>% extract average symbol energy</code><code>par.Es = mean(abs(par.symbols).^2);</code><code>?</code><code> % precompute bit labels</code><code>par.Q = log2(length(par.symbols)); % number of bits per symbol</code><code>par.bits = de2bi(0:length(par. symbols)-1,par.Q,'left-msb');</code><code>?</code><code>% track simulation time</code><code>time_elapsed = 0;</code> code><code>?</code><code>% -- start simulation</code><code>?</code><code>% initialize result arrays (detector x SNR)</code><code>res .VER = zeros(length(par.detector),length(par.SNRdB_list)); % vector error rate</code><code>res.SER = zeros(length(par.detector),length(par.SNRdB_list) ); % symbol error rate</code><code>res.BER = zeros(length(par.detector),length(par.SNRdB_list)); % bit error rate</code><code>?</code> <code>% generate random bit stream (antenna x bit x trial)</code><code>bits = randi([0 1],par.MT,par.Q,par.trials);</code><code>?</code><code>% trials loop</code><code>tic</code><code>for t=1:par.trials</code><code> </code><code> % generate transmit symbol</code><code> idx = bi2de(bits(:,:,t),'left-msb') + 1;</code><code> s = par.symbols(idx). ';</code><code> </code><code> % generate iid Gaussian channel matrix & amp; noise vector</code><code> n = sqrt(0.5)*(randn(par.MR,1 ) + 1i*randn(par.MR,1));</code><code> H = sqrt(0.5)*(randn(par.MR,par.MT) + 1i*randn(par.MR,par. MT));</code><code> </code><code> % transmit over noiseless channel (will be used later)</code><code> x = H*s;</code><code> </code><code> % SNR loop</code><code> for k=1:length(par.SNRdB_list)</code><code> % Current SNR point in dBs</code><code> SNR_dB = par .SNRdB_list(k);</code><code> % Linear SNR</code><code> SNR_lin = 10.^(SNR_dB./10);</code><code> </code><code> % Variance of complex noise per receive antenna</code><code> N0 = par.Es*par.MT/SNR_lin;</code><code> </code><code> % transmit data over noisy channel</code> <code> y = x + sqrt(N0)*n;</code><code> </code><code> % algorithm loop</code><code> for d=1:length(par.detector)</code><code> switch (par.detector{d}) % select algorithms</code><code> case 'MF' % Matched Filter</code><code> [idxhat,bithat] = MF(par ,H,y,N0);</code><code> case 'MMSE' % MMSE detector</code><code> [idxhat,bithat] = MMSE(par,H,y,N0);</code code><code> case 'SIMO' % SIMO lower bound</code><code> [idxhat,bitthat] = SIMO(par,H,y,N0,s);</code><code> case \ 'ADMIN' % ADMM-based Infinity Norm detector</code><code> [idxhat,bithat] = ADMIN(par,H,y,N0);</code><code> case 'OCDBOX' % co -ordinate descent (optimized) detector</code><code> [idxhat,bithat] = OCDBOX(par,H,y);</code><code> case 'Neumann' % coordinate descent</code><code> [idxhat,bitthat] = Neumann(par,H,y,N0);</code><code> case 'Gauss-Seidel' % Gauss-Seidel detector</code><code> [idxhat,bithat ] = Gauss_Seidel(par,H,y,N0);</code><code> case 'Conjugate-Gradient' % conjugate gradient detector</code><code> [idxhat,bithat] = CG(par,H ,y,N0);</code><code> otherwise</code><code> error('par.detector type not defined.')</code><code> end</code><code> </code><code> % -- compute error metrics</code><code> err = (idx~=idxhat);</code><code> res.VER(d,k) = res.VER(d ,k) + any(err);</code><code> res.SER(d,k) = res.SER(d,k) + sum(err)/par.MT;</code><code> res.BER(d,k) = res.BER(d,k) + sum(sum(bits(:,:,t)~=bitthat))/(par.MT*par.Q);</code> <code> </code><code> end % algorithm loop</code><code> </code><code> end % SNR loop</code><code> </code><code> % keep track of simulation time</code><code> if toc>10</code><code> time=toc;</code><code> time_elapsed = time_elapsed + time;</code><code> fprintf('estimated remaining simulation time: %3.0f min.\\
',time_elapsed*(par.trials/t-1)/60);</code><code> tic</code><code> end</code><code> </code><code>end % trials loop</code><code>?

Operation results

References

S. Shahabddin, M. Juntti and C. Studer, “ADMM-based infinity-norm detector for large-scale MIMO”, IEEE International symposium of circuits and systems, Maryland, USA, May 2017.

Some theories are quoted from online literature. If there is any infringement, please contact the blogger to delete it
Follow me to receive massive matlab e-books and mathematical modeling materials

Complete code and data acquisition via private message and real customization of paper data simulation

1 Improvements and applications of various intelligent optimization algorithms
Production scheduling, economic scheduling, assembly line scheduling, charging optimization, workshop scheduling, departure optimization, reservoir scheduling, three-dimensional packing, logistics location selection, cargo space optimization, bus scheduling optimization, charging pile layout optimization, workshop layout optimization, Container ship stowage optimization, water pump combination optimization, medical resource allocation optimization, facility layout optimization, visible area base station and drone site selection optimization
2 Machine learning and deep learning
Convolutional neural network (CNN), LSTM, support vector machine (SVM), least squares support vector machine (LSSVM), extreme learning machine (ELM), kernel extreme learning machine (KELM), BP, RBF, width Learning, DBN, RF, RBF, DELM, XGBOOST, TCN realize wind power prediction, photovoltaic prediction, battery life prediction, radiation source identification, traffic flow prediction, load prediction, stock price prediction, PM2.5 concentration prediction, battery health status prediction, water body Optical parameter inversion, NLOS signal identification, accurate subway parking prediction, transformer fault diagnosis
2. Image processing
Image recognition, image segmentation, image detection, image hiding, image registration, image splicing, image fusion, image enhancement, image compressed sensing
3 Path planning
Traveling salesman problem (TSP), vehicle routing problem (VRP, MVRP, CVRP, VRPTW, etc.), UAV three-dimensional path planning, UAV collaboration, UAV formation, robot path planning, raster map path planning , multimodal transportation problems, vehicle collaborative UAV path planning, antenna linear array distribution optimization, workshop layout optimization
4 UAV applications
UAV path planning, UAV control, UAV formation, UAV collaboration, UAV task allocation, and online optimization of UAV safe communication trajectories
5 Wireless sensor positioning and layout
Sensor deployment optimization, communication protocol optimization, routing optimization, target positioning optimization, Dv-Hop positioning optimization, Leach protocol optimization, WSN coverage optimization, multicast optimization, RSSI positioning optimization
6 Signal processing
Signal recognition, signal encryption, signal denoising, signal enhancement, radar signal processing, signal watermark embedding and extraction, EMG signal, EEG signal, signal timing optimization
7 Power system aspects
Microgrid optimization, reactive power optimization, distribution network reconstruction, energy storage configuration
8 Cellular Automata
Traffic flow, crowd evacuation, virus spread, crystal growth
9 Radar aspect
Kalman filter tracking, track correlation, track fusion