Clear Filters
Clear Filters

Related to implementation of Maximum Likelihood Detection in MATLAB

24 views (last 30 days)
Hello all, I am working on research paper in which I have to implement Maximum Likelihood (ML) detection at the receiver. I am interested in plotting Bit error rate (BER) Vs Signal to noise ratio (SNR) plot using semilogy.
Below I am giving the expression of ML detection that I am trying to implement:
--- (1)
where Y is received signal of dimension , is complex Gaussian channel matrix of dimension such that it has zero mean and 10 variance, X is transmitted signal such that and each has dimension and is chosen from set , where has dimension and it denotes the GSSK modulated symbol. The GSSK modulated symbol has value 1 at positions and value 0 at the remaining () positions.
Also, and , where denotes the cardinality of a set. To find the optimal solution
of (1), the complexity of exhaustive search over is too high to implement.
My query is that I am not getting how to implement ML detection (eq. (1)) in MATLAB. I am also sharing the MATLAB code that I had developed for received signal which is given as
----(2)
where Wis additive white Gaussian noise and has dimension .
Any help in this regard will be highly appreciated.
MATLAB code:
N_t = 4; % number of antennas at tag
N_r = 2; % number of antennas at reader
L = 500; % number of observations
n_t = 2; % number of active antennas in GSSK
% Define the GSSK symbols explicitly
GSSK_symbols = [
1 1 0 0;
1 0 1 0;
1 0 0 1;
0 0 1 1;
];
% Total information bits carried by each symbol
M = floor(log2(nchoosek(N_t, n_t)));
% Number of GSSK symbols
N = 2^M;
for snr = 0:3:21 % This is SNR in dB
% Generate the channel matrix H_tr
H_tr = sqrt(10/2) * (randn(N_r, N_t) + 1i*randn(N_r, N_t));
% Generate the transmitted signal X
X = zeros(N_t, L);
for l = 1:L
symbol_idx = randi(N); % randomly choose a symbol index
X(:, l) = GSSK_symbols(symbol_idx, :).';
end
% Generate the noise W
W = (randn(N_r, L) + 1i*randn(N_r, L)) / sqrt(2);
% Calculate the received signal Y
Y = H_tr * X + 10^(-snr/20) * W;
end

Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!