Contents
Mutual information and outage probability for Signal-Based Modulation
calculates mutual information and probability of outage for MIMO-SBM constellation in Rayleigh fading channel + AWGN
clc
clear all
Set input parameters
Nt = 2; % Number of transmit antennas Nr = 2; % Number of receive antennas pOutage = [0.1, 0.01, 0.001]; % Outage probabilities are calculated at rates specified by array R SNRdB = (0:2:30); % Signal to Noise Ratio(dB) at which the mutual information is calculated SNR = 10 .^ (SNRdB/10); % Signal to Noise Ratio at which the mutual information is calculated Es = Nt; % Transmit power equal to unity at each transmit antenna N0 = Es ./ SNR; % White Gaussian noise spectral density nSim = 1e5; % Number of realization of fading channel
Generate a realization of MIMO fading channel
generate_channel_matrix = @(Nr, Nt) sqrt(0.5) * (randn(Nr, Nt) + 1i* randn(Nr, Nt));
Calculate mutual information of the given channel realization
compute_mutual_info = @(Nr, Nt, H, N0) log2(det( eye(Nr) + (1/N0)*H*eye(Nt)*(H') ));
is the covriance matrix of transmit signal,
number of transmit antennas
Generate different realization of fading channel and calculate MI for each realization
nSNR = numel(SNR); I = zeros(nSNR, nSim); for iSNR = 1 : nSNR for iSim = 1 : nSim if(~mod(iSim, 1e5)) iSim end H = generate_channel_matrix(Nr, Nt); I(iSNR, iSim) = compute_mutual_info(Nr, Nt, H, N0(iSNR)); end end
Compute outage capacity
nOutage = numel(pOutage); cOutage = zeros(nSNR, nOutage); I = real(I); I = sort(I, 2); for iOutage = 1 : nOutage for iSNR = 1 : nSNR % compute rate that meet required outage probability cOutage(iSNR, iOutage) = I(iSNR, floor (nSim * pOutage(iOutage))); end plot(SNRdB, cOutage(:, iOutage)) hold on end
Save output avriables
%save('.\mat\sbm_MI_pOutage_mimo', 'I', 'SNRdB', 'pOutage')