# How to simulate 16QAM Spatial Modulation by ML detection?

1. ## How to simulate 16QAM Spatial Modulation by ML detection?

I have 4QAM-Spatial Modulation matlabcode . But i need to simulate 4transmit antennas,4receive antennas 16QAM-SM By ML detection .How should i do

```Code dot - [expand]1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
clc
clear all;
N=3*10^5;                      %number of symbol
symbol_set=[1+1i;1-1i;1i-1;1i-1i]/sqrt(2);   %set of symbol to be transmitted
symbolset_size=4;
symbol_size=N/3;
Eb_No_Db=(0:25);
nTx=2;                              % number of transmitting antenna
nRx=2;                              % number of receiving antenna
antennabits=[0;1];
Sym_to_bit=[0 0;0 1;1 0;1 1];

i=randi([0 1],1,N) ;    % generating stream of bits

x=vec2mat(i,3);          % grouping generated bits into 3

s=kron(symbol_set,ones(nRx,1));   % grouping symbols into matrix
s=repmat(s,[1 nTx]);
xTransmit=zeros(symbol_size,nTx);
xDemod=zeros(symbol_size,3);

antenna_symbol=zeros(N/3,1);
antenna_symbol(:,1)=x(:,1)+1;       %
antenna_symbol(:,2)=symbol_set(bi2de(x(:,2:3),'left-msb')+1) ;   %Modulate

for ii=1:length(Eb_No_Db)

for jj=1:symbol_size

h=1/sqrt(2)*(randn(nRx,nTx))+ 1i*(randn(nRx,nTx));    % rayleigh channel

n=1/sqrt(2)*(randn(nRx,1))+1i*(randn(nRx,1));            % noise

H=kron(ones(symbolset_size,1),h);
sD= H.*s;

xTransmit(jj,antenna_symbol(jj,1)) =antenna_symbol(jj,2) ;      % Assign Symbol and Antenna Index
xTransmit2=kron(xTransmit(jj,:),ones(nRx,1));

y = sum(xTransmit2.*h,2) +10^(-Eb_No_Db(ii)/20)*n;

y2=kron(ones(symbolset_size,1),y);              % Copy for Symbol set
y2=repmat(y2,1,nRx);             % Copy for Antenna
y2=abs(y2-sD);

z=zeros(symbolset_size,nTx);
z(1,:)=abs(sum(y2(1:2,:),1));
z(2,:)=abs(sum(y2(3:4,:),1));
z(3,:)=abs(sum(y2(5:6,:),1));
z(4,:)=abs(sum(y2(7:8,:),1));
[v r]=min(z);
[v c]=min(v);
xDemod(jj,1)=antennabits(c);

xDemod(jj,2:3)=Sym_to_bit(r(c),:);

end

nErr(ii)= size(find(i-reshape(xDemod',1,[])),2);
end
simBER = nErr/N;

close all
figure
semilogy(Eb_No_Db,simBER,'m.-','linewidth',2);
axis([0 20 10^-5 1])
grid on
legend('Sim 4QAM');
xlabel('Eb/No, dB')
ylabel('Bit Error Rate')
title('Bit Error Prob 4QAM 2x2 (3 Bit) with SM in Rayleigh Fading')```

•

2. ## Re: How to simulate 16QAM Spatial Modulation by ML detection?

FYI, the following implementation includes the ML-aided spatial modulation scheme with QPSK, where the number of transmit and receiver antennas is 4, although it uses Python. You can reproduce that simulation result by changing "L=4_mod=PSK" to "L=16_mod=QAM".

https://ishikawa.cc/imtoolkit/tutori...leigh-BER.html

--[[ ]]--