(16 votes, average: 4.50 out of 5)

MIMO with ML equalization

by on December 14, 2008

We have discussed quite a few receiver structures for a 2×2 MIMO channel namely,

(b) Minimum Mean Square Error (MMSE) equalization

From the above receiver structures, we saw that MMSE equalisation with optimally ordered Successive Interference Cancellation gave the best performance. In this post, we will discuss another receiver structure called Maximum Likelihood (ML) decoding which gives us an even better performance. We will assume that the channel is a flat fading Rayleigh multipath channel and the modulation is BPSK.

2×2 MIMO channel

In a 2×2 MIMO channel, probable usage of the available 2 transmit antennas can be as follows:

1. Consider that we have a transmission sequence, for example ${x_1, x_2, x_3, \ldots, x_n }$

2. In normal transmission, we will be sending $x_1$in the first time slot, $x_2$in the second time slot, $x_3$ and so on.

3. However, as we now have 2 transmit antennas, we may group the symbols into groups of two. In the first time slot, send $x_1$and $x_2$from the first and second antenna. In second time slot, send $x_3$ and $x_4$from the first and second antenna, send $x_5$ and $x_6$in the third time slot and so on.

4. Notice that as we are grouping two symbols and sending them in one time slot, we need only $\frac{n}{2}$ time slots to complete the transmission – data rate is doubled !

5. This forms the simple explanation of a probable MIMO transmission scheme with 2 transmit antennas and 2 receive antennas.

Figure: 2 Transmit 2 Receive (2×2) MIMO channel

Let us now try to understand the math for extracting the two symbols which interfered with each other. In the first time slot, the received signal on the first receive antenna is,

$y_1 =h_{1,1}x_1 + h_{1,2}x_2 + n_1 = [h_{1,1} h_{1,2}] \left[\begin{eqnarray}x_1\\ x_2 \end{eqnarray}\right]+n_1$.

$y_2 = h_{2,1}x_1 + h_{2,2}x_2 + n_2 = [h_{2,1} h_{2,2}] \left[\begin{eqnarray}x_1 \\ x_2\end{eqnarray}\right]+n_2$.

where

$y_1$, $y_2$ are the received symbol on the first and second antenna respectively,

$h_{1,1}$ is the channel from $1^{st}$ transmit antenna to $1^{st}$ receive antenna,

$h_{1,2}$ is the channel from $2^{nd}$ transmit antenna to $1^{st}$ receive antenna,

$h_{2,1}$ is the channel from $1^{st}$ transmit antenna to $2^{nd}$ receive antenna,

$h_{2,2}$ is the channel from $2^{nd}$ transmit antenna to $2^{nd}$ receive antenna,

$x_1$, $x_2$are the transmitted symbols and

$n_1, n_2$ is the noise on $1^{st}, 2^{nd}$ receive antennas.

We assume that the receiver knows $h_{1,1}$, $h_{1,2}$, $h_{2,1}$and $h_{2,2}$. The receiver also knows $y_1$ and $y_2$. The unknown s are $x_1$and $x_2$.

For convenience, the above equation can be represented in matrix notation as follows:

$\begin{eqnarray}\left[\begin{eqnarray}y_1 \\ y_2\end{eqnarray}\right] & = & {\left[\begin{array}{cc}h_{1,1}& h_{1,2}\\ h_{2,1}&h_{2,2}\end{array}\right]}\left[\begin{eqnarray}x_1 \\ x_2 \end{eqnarray}\right]+\left[\begin{eqnarray}n_1 \\ n_2 \end{eqnarray}\right]\end{eqnarray}$.

Equivalently,

$\mathbf{y} = \mathbf{H}\mathbf{x} + \mathbf{n}$

Other Assumptions

1. The channel is flat fading – In simple terms, it means that the multipath channel has only one tap. So, the convolution operation reduces to a simple multiplication. For a more rigorous discussion on flat fading and frequency selective fading, may I urge you to review Chapter 15.3 Signal Time-Spreading from [DIGITAL COMMUNICATIONS: SKLAR]

2. The channel experience by each transmit antenna is independent from the channel experienced by other transmit antennas.

3. For the $i^{th}$ transmit antenna to $j^{th}$ receive antenna, each transmitted symbol gets multiplied by a randomly varying complex number $h_{j,i}$. As the channel under consideration is a Rayleigh channel, the real and imaginary parts of $h_{j,i}$ are Gaussian distributed having mean $\mu_{h_{j,i}=0$ and variance $\sigma^2_{h_{j,i}}=\frac{1}{2}$.

4. The channel experienced between each transmit to the receive antenna is independent and randomly varying in time.

5. On the receive antenna, the noise$n$ has the Gaussian probability density function with

$p(n) = \frac{1}{\sqrt{2\pi\sigma^2}}e^{\frac{-(n-\mu)^2}{2\sigma^2}$ with $\mu=0$ and $\sigma^2 = \frac{N_0}{2}$.

7. The channel $h_{j,i}$ is known at the receiver.

The Maximum Likelihood receiver tries to find $\hat{\mathbf{x}}$ which minimizes, $\mathbf{J} = \left| \mathbf{y} - \mathbf{H}\mathbf{\hat{x}} \right|^2$

$\mathbf{J} = \left|\begin{eqnarray}\left[\begin{eqnarray}y_1 \\ y_2\end{eqnarray}\right] & - & {\left[\begin{array}{cc}h_{1,1}& h_{1,2}\\ h_{2,1}&h_{2,2}\end{array}\right]}\left[\begin{eqnarray}\hat{x}_1 \\ \hat{x}_2 \end{eqnarray}\right]\end{eqnarray} \right|^2$

Since the modulation is BPSK, the possible values of $x_1$is +1 or -1 Similarly $x_2$ also take values +1 or -1. So, to find the Maximum Likelihood solution, we need to find the minimum from the all four combinations of $x_1$and $x_2$.

$\mathbf{J_{+1,+1}} = \left|\begin{eqnarray}\left[\begin{eqnarray}y_1 \\ y_2\end{eqnarray}\right] & - & \left[\begin{array}{cc}h_{1,1}& h_{1,2}\\ h_{2,1}&h_{2,2}\end{array}\right]\left[\begin{eqnarray}+1 \\ +1 \end{eqnarray}\right]\end{eqnarray} \right|^2$

$\mathbf{J_{+1,-1}} = \left|\begin{eqnarray}\left[\begin{eqnarray}y_1 \\ y_2\end{eqnarray}\right] & - & \left[\begin{array}{cc}h_{1,1}& h_{1,2}\\ h_{2,1}&h_{2,2}\end{array}\right]\left[\begin{eqnarray}+1 \\ -1 \end{eqnarray}\right]\end{eqnarray} \right|^2$

$\mathbf{J_{-1,+1}} = \left|\begin{eqnarray}\left[\begin{eqnarray}y_1 \\ y_2\end{eqnarray}\right] & - & \left[\begin{array}{cc}h_{1,1}& h_{1,2}\\ h_{2,1}&h_{2,2}\end{array}\right]\left[\begin{eqnarray}-1 \\ +1 \end{eqnarray}\right]\end{eqnarray} \right|^2$

$\mathbf{J_{-1,-1}} = \left|\begin{eqnarray}\left[\begin{eqnarray}y_1 \\ y_2\end{eqnarray}\right] & - & \left[\begin{array}{cc}h_{1,1}& h_{1,2} \\ h_{2,1}&h_{2,2}\end{array}\right]\left[\begin{eqnarray}-1 \\ -1 \end{eqnarray}\right]\end{eqnarray} \right|^2$

The estimate of the transmit symbol is chosen based on the minimum value from the above four values i.e

if the minimum is $\mathbf{J_{+1,+1} \Rightarrow [1 \ 1 ]$,

if the minimum is $\mathbf{J_{+1,-1} \Rightarrow [1 \ 0 ]$,

if the minimum is $\mathbf{J_{-1,+1} \Rightarrow [0 \ 1 ]$ and
if the minimum is $\mathbf{J_{-1,-1} \Rightarrow [0 \ 0 ]$.

Simulation Model

The Matlab/Octave script performs the following

(a) Generate random binary sequence of +1′s and -1′s.

(b) Group them into pair of two symbols and send two symbols in one time slot

(c) Multiply the symbols with the channel and then add white Gaussian noise.

(d) Find the minimum among the four possible transmit symbol combinations

(e) Based on the minimum chose the estimate of the transmit symbol

(h) Repeat for multiple values of $\frac{E_b}{N_0}$ and plot the simulation and theoretical results.

BER plot 2x2 MIMO Rayleigh channel with Maximum Likelihood equalisation

FIgure: BER plot 2×2 MIMO Rayleigh channel with Maximum Likelihood equalisation

Summary

1. The results for 2×2 MIMO with Maximum Likelihood (ML) equalization helped us to achieve a performance closely matching the 1 transmit 2 receive antenna Maximal Ratio Combining (MRC) case.

2. If we use a higher order constellation like 64QAM, then computing Maximum Likelihood equalization might become prohibitively complex. With 64QAM and 2 spatial stream we need to find the minimum from $64^2 = 4096$combinations ! In such scenarios we might need to employ schemes like sphere decoding which helps to reduce the complexity.

References

D id you like this article? Make sure that you do not miss a new article by subscribing to RSS feed OR subscribing to e-mail newsletter. Note: Subscribing via e-mail entitles you to download the free e-Book on BER of BPSK/QPSK/16QAM/16PSK in AWGN.

V Yogeswar Reddy January 24, 2015 at 4:19 pm

h = 1/sqrt(2)*[randn(nRx,nTx,N/nTx) + j*randn(nRx,nTx,N/nTx)];
In the rayleigh channel model the channel matrix is specified by the above equation,how did we get this?

Paulo Lopes January 23, 2015 at 10:24 pm

Thank for your post. Great work.

Something seams surprising to me. For the 2×2 system you have twice the rate but you are still able to reduce the error probability compared to the theoretical 1×1 system. I would think that you could implement two channels but that the error probability would remain the same… Maybe you can explain why this happens?

Vanita December 23, 2014 at 4:22 pm

hello Krishna,
the infom given on ur blog is really too gud.Thnx for that
I have designed multipath simo channel estimation .
But i’m not getting how to represent the channel matrix for multipath mimo system.
can u help me in that u share some suggested links.

Rgrds
Vanita

palakonda November 24, 2014 at 3:59 pm

please provide the matlab code for channel estimation in MIMO ……..?

lion of africa cape town open 2013 results October 7, 2014 at 8:54 am

Thank you for any other informative web site. The place else maay
I get that type of information written in such an ideal manner?

I have a undertaking that I’m simply now working on, and I have been at the look out for such info.

NATIONAL ANIMALS October 7, 2014 at 4:27 am

Excellent post. I was checking constantly this blog aand I amm impressed!
Extremely helpful info particularly the last part I care for such information a lot.
I was lpoking for this particular information for a very long time.
Thank you and best of luck.

Fast Facts: Namibia October 3, 2014 at 5:36 pm

Very great post. I just stumbled upon your
weblog and wanted to say that I’ve really enjoyed browsing your blo
posts. After all I’ll be subscribing for your feed and I am hoping you write again very soon!

dental implants problems September 5, 2014 at 5:51 am

My partner and I stumbled over here different page
and thought I might check things out. I like what I see so now i’m following you.

Carri May 28, 2014 at 1:34 am

their footwear collections. How To Get A Toddler Into The Bathtub Without A Tantrum.
Consider an outdoor venue if the weather conditions permits, this kind of as the wonderful Ludwig’s Rose Farm, which is
located just 10 minutes out of the city.

ROSU May 10, 2014 at 12:08 am

Sir,

Do you have the codes for ML equalization for MIMO-OFDM systems. This one is for MIMO systems. I need ML equalization for MIMO-OFDM systems. Please help.Really urgent.

msh June 23, 2014 at 10:48 am

Did you get this code for mimo ofdm , if yes please send it to me
m.shawky81@yahoo.com

Madhavi April 22, 2014 at 6:39 pm

Sir, I need your help. You explained six equalizers with V-Blast. But I want it with STBC. Could you please help me out. how will I start?

Winnie April 22, 2014 at 2:22 pm

Thank you for the above tutorial, it was really very helpful. However, am trying to perform ML Estimation for MU-MIMO SCFDMA using Matlab simulink. Am transmitting one TTI(seven SCFDMA symbols) , using pilot symbols for channel Estimation and QPSK modulation scheme.Am having problems with my ML code;

function yEq = MU_MLD(RxSig,Hest)

yEq=complex(zeros(2,length(RxSig)));
for i=1:length(RxSig)
m = mod(i,length(Hest));
if m == 0
n = 72;
else
n = m;
end
h = [Hest(n,1:2);Hest(n,3:4)];
Nrx=2;
%if [s1 s2]=[11,11]
sHat1=1/sqrt(2)*[-1-1i -1-1i];
sHat1Mod=kron(sHat1,complex(ones(Nrx,1)));
zhat1=squeeze(sum(h.*sHat1Mod,2));
J1=sum(abs(RxSig(:,i)-zhat1),1);

%if [s1 s2]=[11,10]
sHat2=1/sqrt(2)*[-1-1i 1-1i];
sHat2Mod=kron(sHat2,complex(ones(Nrx,1)));
zhat2=squeeze(sum(h.*sHat2Mod,2));
J2=sum(abs(RxSig(:,i)-zhat2),1);

%if [s1 s2]=[11,01]
sHat3=1/sqrt(2)*[-1-1i -1+1i];
sHat3Mod=kron(sHat3,complex(ones(Nrx,1)));
zhat3=squeeze(sum(h.*sHat3Mod,2));
J3=sum(abs(RxSig(:,i)-zhat3),1);

%if [s1 s2]=[11,00]
sHat4=1/sqrt(2)*[-1-1i 1+1i];
sHat4Mod=kron(sHat4,complex(ones(Nrx,1)));
zhat4=squeeze(sum(h.*sHat4Mod,2));
J4=sum(abs(RxSig(:,i)-zhat4),1);

%if [s1 s2]=[10, 11]
sHat5=1/sqrt(2)*[1-1i -1-1i];
sHat5Mod=kron(sHat5,complex(ones(Nrx,1)));
zhat5=squeeze(sum(h.*sHat5Mod,2));
J5=sum(abs(RxSig(:,i)-zhat5),1);

%if [s1 s2]=[10, 10]

sHat6=1/sqrt(2)*[1-1i 1-1i];
sHat6Mod=kron(sHat6,complex(ones(Nrx,1)));
zhat6=squeeze(sum(h.*sHat6Mod,2));
J6=sum(abs(RxSig(:,i)-zhat6),1);

%if [s1 s2]=[10, 01]

sHat7=1/sqrt(2)*[1-1i -1+1i];
sHat7Mod=kron(sHat7,complex(ones(Nrx,1)));
zhat7=squeeze(sum(h.*sHat7Mod,2));
J7=sum(abs(RxSig(:,i)-zhat7),1);

%if [s1 s2]=[10, 00]

sHat8=1/sqrt(2)*[1-1i 1+1i];
sHat8Mod=kron(sHat8,complex(ones(Nrx,1)));
zhat8=squeeze(sum(h.*sHat8Mod,2));
J8=sum(abs(RxSig(:,i)-zhat8),1);

%if [s1 s2]=[01, 11]

sHat9=1/sqrt(2)*[-1+1i -1-1i];
sHat9Mod=kron(sHat9,complex(ones(Nrx,1)));
zhat9=squeeze(sum(h.*sHat9Mod,2));
J9=sum(abs(RxSig(:,i)-zhat9),1);

%if [s1 s2]=[01, 10]

sHat10=1/sqrt(2)*[-1+1i 1-1i];
sHat10Mod=kron(sHat10,complex(ones(Nrx,1)));
zhat10=squeeze(sum(h.*sHat10Mod,2));
J10=sum(abs(RxSig(:,i)-zhat10),1);

%if [s1 s2]=[01, 01]
sHat11=1/sqrt(2)*[-1+1i -1+1i];
sHat11Mod=kron(sHat11,complex(ones(Nrx,1)));
zhat11=squeeze(sum(h.*sHat11Mod,2));
J11=sum(abs(RxSig(:,i)-zhat11),1);

%if [s1 s2]=[01, 00]
sHat12=1/sqrt(2)*[-1+1i 1+1i];
sHat12Mod=kron(sHat12,complex(ones(Nrx,1)));
zhat12=squeeze(sum(h.*sHat12Mod,2));
J12=sum(abs(RxSig(:,i)-zhat12),1);

%if [s1 s2]=[00, 11]
sHat13=1/sqrt(2)*[1+1i -1-1i];
sHat13Mod=kron(sHat13,complex(ones(Nrx,1)));
zhat13=squeeze(sum(h.*sHat13Mod,2));
J13=sum(abs(RxSig(:,i)-zhat13),1);

%if [s1 s2]=[00, 10]
sHat14=1/sqrt(2)*[1+1i 1-1i];
sHat14Mod=kron(sHat14,complex(ones(Nrx,1)));
zhat14=squeeze(sum(h.*sHat14Mod,2));
J14=sum(abs(RxSig(:,i)-zhat14),1);

%if [s1 s2]=[00, 01]
sHat15=1/sqrt(2)*[1+1i -1+1i];
sHat15Mod=kron(sHat15,complex(ones(Nrx,1)));
zhat15=squeeze(sum(h.*sHat15Mod,2));
J15=sum(abs(RxSig(:,i)-zhat15),1);

%if [s1 s2]=[00, 00]
sHat16=1/sqrt(2)*[1+1i 1+1i];
sHat16Mod=kron(sHat16,complex(ones(Nrx,1)));
zhat16=squeeze(sum(h.*sHat16Mod,2));
J16=sum(abs(RxSig(:,i)-zhat16),1);

% finding the minimum from the sixteen alphabet combinations
rVec = [J1;J2;J3;J4;J5;J6;J7;J8;J9;J10;J11;J12;J13;J14;J15;J16];
[~, dd] = min(rVec,[],1);

% mapping the minima to bits
ref =1/sqrt(2)* [[-1-1i -1-1i]; [-1-1i 1-1i];[-1-1i -1+1i];[-1-1i 1+1i];
[1-1i -1-1i];[1-1i 1-1i];[1-1i -1+1i];[1-1i 1+1i];
[-1+1i -1-1i];[-1+1i 1-1i];[-1+1i -1+1i];[-1+1i 1+1i];
[1+1i -1-1i];[1+1i 1-1i];[1+1i -1+1i];[1+1i 1+1i]];

yEq(1,i) = ref(dd,1);
yEq(2,i)= ref(dd,2);

end

Please advise me, because am getting a constant BER therefore am doing something wrong.
Thank you very much

Vaibhav November 17, 2012 at 7:29 pm

Hi Krishna, its a great work done by you, I am trying to modify your code for 3X3 MIMO case everything is fine till i got finding the minimum from the four alphabet combinations , but thereafter I could not understand the part related to mapping the minima to bits
ref = [1 1; 1 0; 0 1; 0 0 ];
ipHat = zeros(1,N);
ipHat(1:3:end) = ref(dd,1);
ipHat(2:3:end) = ref(dd,2);
This I have modified as
ref = [1 1 1; 1 1 0; 1 0 1;1 0 0; 0 1 0;0 0 1;0 0 0];
ipHat = zeros(1,N);
ipHat(1:3:end) = ref(dd,1);
ipHat(2:3:end) = ref(dd,2);
but getting flat response for all Eb/No

Could you elaborate this part

Thanks

Krishna Sankar November 18, 2012 at 6:33 am

@Vaibhav: Are you getting zero BER for no-noise case? One can use that for debugging the code.
Then as you said, one need to find the cost function Jxxx for all the 2^3=8 combinations and then try to find the minima among them.

raj September 22, 2012 at 12:27 pm

Hi,
sir you told that For the 2×1 STBC system, the zero forcing equalizer should have given the same performance as ML equalizer, but zero forcing have some disadvantage .so can you provide me a refr. for coding in which ML is use for 2×1 STBC system.
Thank u….

Krishna Sankar September 26, 2012 at 5:37 am

@raj: For 2×1 STBC, the zero forcing equalizer is optimum as there is no interfering term.

sera September 1, 2012 at 2:12 pm

Hi mr. khrisna
why we should change 0 into -1? is there any reason?

Krishna Sankar September 4, 2012 at 5:06 am

@sera: that is just to provide two references

Gidy Florez August 28, 2012 at 7:19 pm

Hi Khrisna!

Do you know any equalizer which doesn´t need to know the channel?

Krishna Sankar August 29, 2012 at 5:17 am

@Gidy Florez: Well, am guessing that you are referring to equalizer estimation algorithms.

piyush July 7, 2012 at 9:22 am

STBC 2×2 and 2×1 both system receiver use block= antenna— combiner—– ml decoder—-out put(ref by book space time coding branka vucetic, jinhong yuan John Wiley & Sons Ltd)

1. which type combiner use?
2. combiner and ml decoder are same and they work combine

Krishna Sankar July 10, 2012 at 5:39 am

@piyush: For the 2×1 STBC system, the zero forcing equalizer should have given the same performance as ML equalizer

Raj April 11, 2012 at 10:26 am

Dear Krishna,
How can we make sur that this results is correct. Is there any theoretical analysis for ML, that we can plot and compare with the simulation??

Krishna Sankar April 13, 2012 at 3:37 am
sara April 2, 2012 at 12:14 am

Hi Krishna!
man i am such a big fan of yourz… your make the incomprehensible seem topics quite easy and understandable.
I am working on blind channel equalization (i am trying to simulate CMA and RCA in MATLAB for time varying, multipath rayleigh channel). just wanted to ask have you tried this domain? can you provide me some guidance in this area? any idea about some good website which may help me in my Matlab simulation of said algos. Its urgent coz I am stuck at some point and couldnt find any way out.

Krishna Sankar April 2, 2012 at 5:17 am

@sara: Thanks. Have not looked into the blind equalization topic, sorry.

student March 28, 2012 at 12:36 pm

Dear Mr. Krishna
Thank You

Krishna Sankar March 30, 2012 at 5:51 am

@student: hope posts @ http://www.dsplog.com/tag/psk/ can be of help to you

student March 31, 2012 at 8:03 pm

thanks. I have been able to modify it with qpsk modulation

reza March 19, 2012 at 1:45 pm

Hi Krishna.
1. what does “2*ip-1;” means? whether 2 represent number of bpsk constellation?
2. i have tried this program with 3×3 and 4×4 Rx/Tx combination, it’s the result : http://cdn-u.kaskus.us/71/joci0gkv.jpg . is it true?
3. can this program use for qpsk, 16qam, and 64qam constellation?
Thanks for the attention.

Krishna Sankar March 21, 2012 at 5:06 am

@reza: My replies
1. The variable ip is random bits of 1′s and 0′s. The 2*ip-1 maps 1′s to +1 and 0′s to -1 (aka BPSK modulation)
2. Have not tried 3×3, 4×4. Need to check
3. Yes. But need to modify to handle the appropriate modulation
http://www.dsplog.com/2012/01/01/symbol-error-rate-16qam-64qam-256qam/

reza March 24, 2012 at 6:41 pm

thanks for the feedback.
- I have tried for use combination of 1×1 Tx-Rx in this project, but I must get an error in “Channel and noise addition” part. Why?
- Which part should be change for use QPSK modulation beside changing the combination of sHat?

Krishna Sankar March 26, 2012 at 5:34 am

@reza: The post on 1tx-1rx with Rayleigh channel will be of help
http://www.dsplog.com/2008/08/10/ber-bpsk-rayleigh-channel/

Anky March 7, 2012 at 9:53 am

hi Krishna,do you have any code for MIMO OFDM using Sphere Detection?

i’m sorry for my question that out of topic

thank you

Krishna Sankar March 12, 2012 at 4:54 am

@Anky: Will try to write on that topic

Anky March 19, 2012 at 9:05 am

oh that’s great

can you spare me some clue to solve this method?

Krishna Sankar March 21, 2012 at 5:07 am

@Anky: clue?

faisal January 5, 2012 at 12:12 pm

Hi Krishna, Do have any information and matlab code for Semidefinite program (SDP) relaxation detector (optimization problem).

Krishna Sankar January 6, 2012 at 6:16 am

@faisal: Sorry no

faisal January 6, 2012 at 2:27 pm

Thanks Krishna for quick reply and time

faisal December 21, 2011 at 7:56 pm

Please can u give 16QAM code instead of BPSK using ML ?

Krishna Sankar January 4, 2012 at 5:39 am

@faisal: I do not have any 16QAM MIMO ML Matlab code handy. But hope the posts on 16QAM can help you to reach the goal
http://www.dsplog.com/tag/16-QAM/

faisal January 5, 2012 at 11:29 am

Thanks Krishna for time and help

benza November 15, 2011 at 4:51 am

can you explain me this lines

EbN0Lin = 10.^(Eb_N0_dB/10);
theoryBer_nRx1 = 0.5.*(1-1*(1+1./EbN0Lin).^(-0.5));
p = 1/2 – 1/2*(1+1./EbN0Lin).^(-1/2);
theoryBerMRC_nRx2 = p.^2.*(1+2*(1-p));

???

Krishna Sankar November 15, 2011 at 5:40 am

@benza :
EbN0Lin = 10.^(Eb_N0_dB/10); % converting log to linear
theoryBer_nRx1 = 0.5.*(1-1*(1+1./EbN0Lin).^(-0.5)); % theoretical value for BER in Rayleigh channel
http://www.dsplog.com/2009/01/22/derivation-ber-rayleigh-channel/

p = 1/2 – 1/2*(1+1./EbN0Lin).^(-1/2);
theoryBerMRC_nRx2 = p.^2.*(1+2*(1-p)); % theoretical value for BER in Rayleigh channel for 2Rx case

eng_dina June 17, 2010 at 3:48 am

please Mr. Krishna Sankar Iwant to build simple mimo ofdm system to simulate snr vs. ber but I want it the mimo system to be flexable not only 2×2 so ican change the number of transmitter and recievers please help me if you have the matlab code please send it to me

Krishna Sankar June 21, 2010 at 5:20 am

@eng_dina: In most of the articles which I have discussed I have used 2×2 MIMO case. And to increase the speed of the Matlab simulations, I have not used inv() operation in Matlab. You can try using inv() operation and increase the speed of the simulations

murat June 7, 2010 at 3:26 pm

I study PAPR REDUCTION for MIMO-OFDM. AND I need matlab code for papr reductıon for MIMO-ofdm. ıf you have any matlab code for thıs subject, please send me…… pls…

Krishna Sankar June 15, 2010 at 6:11 am

@murat: Sorry, I have not tried to do much on PAPR reduction on OFDM systems. If needed you may refer to some posts on PAPR @ http://www.dsplog.com/tag/papr

leslie May 17, 2010 at 8:27 am

Why is my comment deleted ??

Vahid April 26, 2010 at 9:34 pm

Hi,
I wish to know whether the ML solution for Y = HX+Z (either X or H to be unknown) has a closed form expression or not. Although I know it does not, but of my surprise is that I have come across some papers indicating that the ML solution for the above equation has a closed form similar to what you have mentioned in ZF equalization. Is ZF method equivalent to ML?

Krishna Sankar April 27, 2010 at 4:58 am

@Vahid: I believe the ZF solution is equivalent to ML only if the channel is orthognonal. In other cases, ML is able to combat the interference terms, whereas ZF does not do a good job at that.

deepak February 24, 2010 at 9:34 pm

hi,
can u just tell me that whether ur matlab code for ml equalisation utilises viterbi algorithm aur something else??

thanks

Krishna Sankar March 31, 2010 at 5:11 am

@deepak: This code uses brute-force ML (no Viterbi)

eng_dina February 6, 2010 at 5:43 am

thanks

eng_dina January 30, 2010 at 10:58 pm

Idon’t try to simulte cfo for mimo system only but for mimo ofdm I propose a new scheme that targets MMIO OFDM systems which have unsynchronized oscillators such that CFO of individual paths have to be estimated separately. This scheme may also apply to OFDM systems with multi-user access. The new method, which is similar to Moose’s method, estimates the CFO by measuring the carrier phase difference between 2 identical successive training sequences embedded in the preambles. In order to make CFO estimates be more time efficient,I allow 2 transmitter antennas transmit their training sequence concurrently in every time period, except the first and the last period. I use Frank-Zadoff code with different phase shifts in the training sequences in different antennas. Due to the good correlation property of Frank-Zadoff code, it helps reduce the interference caused by the concurrent transmissions from other antennas.
cfo for mimo only but for mimo ofdm system

eng_dina January 29, 2010 at 3:33 pm

Idon’t try to simulte cfo for mimo only but for mimo ofdm system After examining some synchronization I propose a new scheme that targets MMIO OFDM systems which have unsynchronized oscillators such that CFO of individual paths have to be estimated separately. This scheme may also apply to OFDM systems with multi-user access. The new method, which is similar to Moose’s method, estimates the CFO by measuring the carrier phase difference between 2 identical successive training sequences embedded in the preambles. In order to make CFO estimates be more time efficient,I allow 2 transmitter antennas transmit their training sequence concurrently in every time period, except the first and the last period. I use Frank-Zadoff code with different phase shifts in the training sequences in different antennas. Due to the good correlation property of Frank-Zadoff code, it helps reduce the interference caused by the concurrent transmissions from other antennas.

eng_dina January 28, 2010 at 11:29 pm

Idon’t try to simulte After examining some synchronization I propose a new scheme that targets MMIO OFDM systems which have unsynchronized oscillators such that CFO of individual paths have to be estimated separately. This scheme may also apply to OFDM systems with multi-user access. The new method, which is similar to Moose’s method, estimates the CFO by measuring the carrier phase difference between 2 identical successive training sequences embedded in the preambles. In order to make CFO estimates be more time efficient,I allow 2 transmitter antennas transmit their training sequence concurrently in every time period, except the first and the last period. I use Frank-Zadoff code with different phase shifts in the training sequences in different antennas. Due to the good correlation property of Frank-Zadoff code, it helps reduce the interference caused by the concurrent transmissions from other antennas.
cfo for mimo only but for mimo ofdm system

Umashankar Dewangan January 4, 2010 at 9:52 pm

Hello sir,
i am new to simulation. i want to simulate uplink multiuser MIMO-OFDM detection. i have to do this for LS, MMSE, SIC, V-BLAST and ML. BER comparision and complexity comparision has to be done.
Users have only single antenna and BS has multiple antenna.
my system model is as follows- first generate data then mapping (i m using BPSK ) then serial to parallel converter then ifft (i m taking size-128) then cp (i m taking 10% of ifft size) then parallel to serial then transmit it. i have doubt in all the bracket values why and what value should we choose?
I have to transmit this multiple user data through Rayleigh frequency selective fading channel. how to generate this channel?
and at the BS should we use OFDM demodulation just before MUD block at each receive antenna?

doris November 30, 2009 at 6:42 pm

hi,
your site has been very useful to me. thank u so much. but i have a question abt the MIMO ML Equalizer matlab code.

what does ipHat(1:2:end) = ref(dd,1) do/mean? i am new with matlab.

thanks

Krishna Sankar December 7, 2009 at 4:58 am

@doris: Based on which variable minimized the error, am picking the data bits accordingly.

raj November 12, 2009 at 10:58 am

Is there any formula or program to count number of multipliers and division to form an estimate of complexity?

how can we measure the diversity orders of all these detectors?

Should i get program or formula for maximum likelihood (ML) with sphere decoder(SD)?

bye.

Krishna Sankar November 13, 2009 at 5:40 am

@raj: My replies
1/ Hand calculate
2/ Based on the BER performance, one can get an estimate. Please refer text books for precise details
3/ I have not yet discussed sphere decoding.

raj November 18, 2009 at 1:01 pm

Ok sir,

but should i have to calculate operations based on mathematics? and suppose if i am sending 1000000 sybols, than operations have to multiply with 1000000 or not?
i have read somewhere that the slope of BER vs SNR gives diversity order, is it true? and which book give the detail regarding to diversity order?

Krishna Sankar December 6, 2009 at 3:54 pm
raj October 26, 2009 at 3:56 pm

Happy dipavali & happy new year sir,
Thanks for giving me the equation for inverse of 4*4 matrix, i m still not apply it, but it will work surely, but the complexity may also incresed so,

1. How can i measure the complexity?
2. Which operations have to considering during complexity calculation?

once again greate thx for helping me.
bye

Krishna Sankar November 7, 2009 at 7:08 am

@raj: Happy dipavali.
1/ You can count the number of multipliers and division to form an estimate of complexity
2/ Multipliers and divisions

parkks October 23, 2009 at 1:05 pm

hi krishna.
i am doing project on mimo so please if possible provide me a ml detect code .
i wanna m file.
thx

park ks October 23, 2009 at 8:24 am

hi krishna
i am doing project on mimo ofdm so please if possible provide me a code at ml detector. i wanna m file
thx

Krishna Sankar October 27, 2009 at 5:30 am

@park: Using this ML code as a reference, you might be able to overlay an OFDM tx-rx on top of this. Good luck.

Faisal October 20, 2009 at 7:31 pm

Hi Krishna Pillai,
I hope you are OK,
Could you help me how I can can derive the BER of SC-FDMA system?

Thanks,
faisal

Krishna Sankar October 27, 2009 at 5:21 am

@Faisal: The SC-FDMA is close to OFDM, no? So, wont the BER of underlying modulation scheme hold good?

raj October 8, 2009 at 11:31 am

Sir, the inverse of 2*2 matrix is 1/(ad-bc) [d -b: -c a],

I am search lot but i am not getting the inverse of 4*4 matrix, so please can you tell me what is inverse of 4*4 matrix and whts the procedure to obtain it?

Krishna Sankar October 12, 2009 at 5:21 am

@raj: From a quick googling, found the following page. It discuss inverse of a 4×4 matrix
http://www.cvl.iis.u-tokyo.ac.jp/~miyazaki/tech/teche23.html

Coldfish September 23, 2009 at 3:55 am

Thanks for your sharing..It’s really useful for understanding ML decoder in order to decode for MIMO cases.

If possible, can you show us how a linear orthogonal decoder works?

Thanks a lot!

Krishna Sankar October 1, 2009 at 5:12 am

@Coldfish: Can you plz give me an example of linear orthogonal decoder.

Coldfish October 3, 2009 at 4:08 am

As far as I know, orthogonal space-time codes can be decoded with a linear orthogonal decoder. I am not %100 percent sure but in spite of using ML decoder at the receiver, we can use the equivalent H channel matrix to decode the symbols. If the code matrix is an orthogonal design, without using all combinations of matrix (ML decoder), we can decode as well with equivalent H matrix easily.

Specifically, I stated that how we can decode OSTBC and QOSTBC designs? Is it possible to give some examples about that? I think QOSTBC are decodable with Pairwise ML decoder.

Krishna Sankar October 8, 2009 at 5:19 am

@Coldfish: Yes, if the code is orthogonal we can do with linear equalizer (as we discussed in STBC case, http://www.dsplog.com/tag/stbc). I have discussed only a simple Alamouti case, which is an orthogonal code. I need to read up more on non-orthogonal STBC cases and QOSTBC (Q for Quasi?).

Sivam September 18, 2009 at 12:51 pm

Its me again! Thanks for all your wonderful help!! Based on your MIMO 2×2 codes, apparently it cannot work if i just change the nTX & nRX if say i want to do for 4×4 scenario. Is it possible to modify your codes to fit 4×4 or will it be extremely tough? Pls advise!!Thank u!!

Krishna Sankar September 22, 2009 at 5:38 am

@Sivam: By simply changing nTx, nRx to 4 wont enable a 4×4 MIMO scenario. Reason being, the equalizer which is currently an inversion of a 2×2 channel does not scale up gracefully. When changing to a 4×4 MIMO link, pay close attention to the equalizer part. Good luck.

Kon August 14, 2009 at 2:18 pm

Hi!
Can you describe the sphere decoding algorithm in detail?
(Or as an m file?)

Krishna Sankar August 18, 2009 at 3:40 am

@Kon: I have not yet discussed Sphere decoding. I will add that to the to-do list

Bob July 6, 2009 at 6:31 am

hi, have you thought about if the modulation scheme of one of the transmiter is unknown, how can I calculate the BER? Here is something with modulation classification.

Krishna Pillai July 6, 2009 at 7:27 pm

@Bob: Well, if we do not know the type of modulation, it might be a bit too difficult, no? In general, we know the modulation type ie. BPSK/QPSK/QAM etc and based on that information, we define the demodulation structure.

Btw, am curious: can you plz specify some more details about the scenario in which were the modulation scheme of the transmitter is unknown at the receiver. Thanks.

Chi Pham June 10, 2009 at 6:32 pm

Hi Krishna Pillai,
As your results about different methods, it can be seen that receive diversity with MRC gives better performance than any kinds of MIMO receiver (ZF, ZF SIC, MMSE, MMSE SIC, ML), is it right? Pls explain me about this.

Krishna Pillai June 11, 2009 at 4:52 am

@Chi Pham: Well, I do not think that the statement “it can be seen that receive diversity with MRC gives better performance than any kinds of MIMO receiver” – is correct. Receive diversity with MRC is applicable even in non-MIMO cases also, for eg, 1 transmit 2 receive MRC case.

maya May 29, 2009 at 5:44 pm

Hey sir,u have sed dat for mimo 1 has to pair up data n den transmit it,cant we send a copy of data at both transmitters and den at da detectr side select the bit with more power u can say,is it da right approach or not??

Krishna Pillai May 31, 2009 at 8:45 pm

@maya: Typically, sending the same information from two transmit antennas at the same time does not provide benefits. The approach which you said can be done at the receiver, if we have more than one receive antenna. The post on selection diversity briefly touches on this aspect.

yazeed May 17, 2009 at 11:46 pm

Hi
with regard to 2×2 MIMO with ML eqaulization what the changs in the simulation code if there are 8 transmit antenna instead of 2.
Thank you

Krishna Pillai May 20, 2009 at 5:36 am

@yazeed: Does 8 trnamsit antennas mean 8 parallel data streams? In that case, the complexity of the ML increases alarmingly

yaxeed May 17, 2009 at 11:36 pm

Krishna Pillai May 20, 2009 at 5:35 am

@yaxeed: Did you mean, you would want to find out the result, if we use QPSK instead of BPSK. Good luck in your algorithm explorations.

ramu March 31, 2009 at 10:01 am

In reshape matrix i think that sMod size and [ntx,nrx,N/ntx] size should be same ,sMod size is 1000000 but [ntx,nrx,N/ntx] size is 2000000 .how is it possible ..what is the use of squeeze

Krishna Pillai April 4, 2009 at 4:42 pm

@ramu: sMod is a three dimensional matrix. The squeeze function enables us to remove one of the dimensions in an n-dimensional matrix.

lily March 26, 2009 at 1:15 pm

I’m concerning about mimoML on time and frequency selective fading, could you give me some tips? Thank you very much!

Krishna Pillai April 4, 2009 at 7:55 am

@lily: The simulations which I provided above are for flat fading time invarient channel. I have not worked much on MIMO with time/frequency selective fading channel.

ilhami March 23, 2009 at 7:51 pm

Hello,

Could you explain how we can calculate the min J if we use 16QAM instead of BPSK?

Thanks,
Ilhami

Krishna Pillai March 25, 2009 at 5:45 am

@ilhami: For 16-QAM it becomes a bit exhaustive. For each spatial dimension, there are 16possible inputs. So, with 2 spatial streams, we need to find the minimum from 16^2 = 256 combinations.

Grigoras Christian March 16, 2009 at 2:03 pm

Hello I must simulated the influence of BER in WLAN. Could you help me with some books? tutorial? I must simulat in a program called ADS (Advanced System Design). PLs help. contact me on me email address. 10x

Krishna Pillai March 21, 2009 at 8:28 am

@ Grigoras Christian: Simulation of BER in WLAN should be reasonably easy. I do not have faimiliarity with ADS. You may look at some posts on OFDM @
(a) http://www.dsplog.com/tag/ofdm
(b) Post on Mathworks simulating 802.11a WLAN in Simulink.
http://www.mathworks.com/matlabcentral/fileexchange/3540

Hope this helps. Good luck.

shravani February 23, 2009 at 11:25 am

i am doing project on mimo ofdm so please if possible provide me a code

Krishna Pillai February 24, 2009 at 5:35 am

@shravani: Sure, will do write up on MIMO OFDM infuture.

shravani February 12, 2009 at 11:25 am

please suggest a code for MIMO OFDM

Krishna Pillai February 19, 2009 at 6:01 am

@shravani: I have not posted on MIMO plus OFDM. Seems to be a good addition. I will add that.

balu October 17, 2009 at 1:46 pm

hi sravani
i am also doing project on mimo ofdm.
what is your project title. so that we can discuss on this.

Liran January 15, 2009 at 6:17 pm

Hi,
Can you please show what changes to do in your codes in order to get Symbol Error Rate instead of BER?

Thank you!

Krishna Pillai January 16, 2009 at 6:32 am

@Liran: Depends on the modulation scheme. For BPSK, BER is equal to symbol error rate. For higher order modulations symbol error can result in multiple bit errors (depending on the bit assigned to each symbol). For finding the symbol error rate, we define decision boundaries around each symbol. When ever the received symbol is outside the boundary, then the symbol is in error.

You may look at some posts on QAM symbol error rate calculation in AWGN for reference.

Symbol Error Rate (SER) for QPSK (4-QAM)

Symbol Error Rate (SER) for 16-QAM

Hope this helps.

brahhmaji T.A.R.K. December 23, 2008 at 1:46 pm

very good
useful