1 Star2 Stars3 Stars4 Stars5 Stars (12 votes, average: 4.50 out of 5)
Loading ... Loading ...
Print Print

MIMO with ML equalization

by Krishna Sankar on December 14, 2008

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

(a) Zero Forcing (ZF) equalization

(b) Minimum Mean Square Error (MMSE) equalization

(c) Zero Forcing equalization with Successive Interference Cancellation (ZF-SIC)

(d) ZF-SIC with optimal ordering and

(e) MIMO with MMSE SIC and optimal ordering

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

2. In normal transmission, we will be sending in the first time slot, in the second time slot, 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 and from the first and second antenna. In second time slot, send and from the first and second antenna, send and 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 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,

.

The received signal on the second receive antenna is,

.

where

, are the received symbol on the first and second antenna respectively,

is the channel from transmit antenna to receive antenna,

is the channel from transmit antenna to receive antenna,

is the channel from transmit antenna to receive antenna,

is the channel from transmit antenna to receive antenna,

, are the transmitted symbols and

is the noise on receive antennas.

We assume that the receiver knows , , and . The receiver also knows and . The unknown s are and .

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

.

Equivalently,

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 transmit antenna to receive antenna, each transmitted symbol gets multiplied by a randomly varying complex number . As the channel under consideration is a Rayleigh channel, the real and imaginary parts of are Gaussian distributed having mean and variance .

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 has the Gaussian probability density function with

with and .

7. The channel is known at the receiver.

Maximum Likelihood (ML)Receiver

The Maximum Likelihood receiver tries to find which minimizes,

Since the modulation is BPSK, the possible values of is +1 or -1 Similarly 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 and .

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

if the minimum is ,

if the minimum is ,

if the minimum is and
if the minimum is .

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 and plot the simulation and theoretical results.

Click here to download Script for computing BER for BPSK in 2×2 MIMO Rayleigh channel with Maximum Likelihood Equalization

BER plot 2x2 MIMO Rayleigh channel with Maximum Likelihood equalisation

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 combinations ! In such scenarios we might need to employ schemes like sphere decoding which helps to reduce the complexity.

References

[DIG-COMM-BARRY-LEE-MESSERSCHMITT] Digital Communication: Third Edition, by John R. Barry, Edward A. Lee, David G. Messerschmitt

[WIRELESS-TSE, VISWANATH] Fundamentals of Wireless Communication, David Tse, Pramod Viswanath

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.

{ 102 comments… read them below or add one }

Carri May 28, 2014 at 1:34 am

This is the explanation why so several celebs are mad about
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.

Reply

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.

Reply

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

Reply

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?

Reply

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

Reply

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

Reply

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.

Reply

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….

Reply

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.

Reply

sera September 1, 2012 at 2:12 pm

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

Reply

Krishna Sankar September 4, 2012 at 5:06 am

@sera: that is just to provide two references

Reply

Gidy Florez August 28, 2012 at 7:19 pm

Hi Khrisna!

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

Reply

Krishna Sankar August 29, 2012 at 5:17 am

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

Reply

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

Reply

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

Reply

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??

Reply

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.

Reply

Krishna Sankar April 2, 2012 at 5:17 am

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

Reply

student March 28, 2012 at 12:36 pm

Dear Mr. Krishna
I was sent an message to your email. I need your help about this post but use QPSK modulation. Hope you can read my message.
Thank You

Reply

Krishna Sankar March 30, 2012 at 5:51 am

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

Reply

student March 31, 2012 at 8:03 pm

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

Reply

reza March 19, 2012 at 1:45 pm

Hi Krishna.
i want to ask some question about this project.
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.

Reply

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/

Reply

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?

Reply

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/

Reply

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

Reply

Krishna Sankar March 12, 2012 at 4:54 am

@Anky: Will try to write on that topic

Reply

Anky March 19, 2012 at 9:05 am

oh that’s great

can you spare me some clue to solve this method?

Reply

Krishna Sankar March 21, 2012 at 5:07 am

@Anky: clue?

Reply

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).

Reply

Krishna Sankar January 6, 2012 at 6:16 am

@faisal: Sorry no

Reply

faisal January 6, 2012 at 2:27 pm

Thanks Krishna for quick reply and time

Reply

faisal December 21, 2011 at 7:56 pm

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

Reply

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/

Reply

faisal January 5, 2012 at 11:29 am

Thanks Krishna for time and help

Reply

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));

???

Reply

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

Reply

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

Reply

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

Reply

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…

Reply

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

Reply

leslie May 17, 2010 at 8:27 am

Why is my comment deleted ??

Reply

Vahid April 26, 2010 at 9:34 pm

Hi,
I have already read your articles about the ZF, MMSE and ML detection methods in MIMO.
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?

Reply

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.

Reply

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??

please reply it is really very important.
thanks

Reply

Krishna Sankar March 31, 2010 at 5:11 am

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

Reply

eng_dina February 6, 2010 at 5:43 am

please reply my massege it’s really important
thanks

Reply

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
please helpppppppppppppppppppppppp

Reply

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.
please helpppppppppppppppppppppppp

Reply

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
please helpppppppppppppppppppppppp

Reply

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?
Sir please help me?and Kindly give me steps and approach for simulation?

Reply

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

Reply

Krishna Sankar December 7, 2009 at 4:58 am

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

Reply

raj November 12, 2009 at 10:58 am

thank you for reply,sir

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)?

my great pleasure for your reply,
bye.

Reply

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.

Reply

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?

Reply

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

Reply

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

Reply

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

Reply

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

Reply

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.

Reply

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

Reply

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?

Reply

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?

Reply

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

Reply

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!

Reply

Krishna Sankar October 1, 2009 at 5:12 am

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

Reply

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.

Reply

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?).

Reply

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!!

Reply

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.

Reply

Kon August 14, 2009 at 2:18 pm

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

Reply

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

Reply

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.

Reply

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.

Reply

Chi Pham June 10, 2009 at 6:32 pm

Hi Krishna Pillai,
Thanks a lot for your sequence of knowledge about MIMO receivers.
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.

Reply

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.

Reply

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??

Reply

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.
http://www.dsplog.com/2008/09/06/receiver-diversity-selection-diversity/

Reply

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

Reply

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

Reply

yaxeed May 17, 2009 at 11:36 pm

isntead of BPSK what about QPSK

Reply

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.

Reply

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

Reply

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.

Reply

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!

Reply

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.

Reply

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

Reply

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.

Reply

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

Reply

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.

Reply

shravani February 23, 2009 at 11:25 am

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

Reply

Krishna Pillai February 24, 2009 at 5:35 am

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

Reply

shravani February 12, 2009 at 11:25 am

please suggest a code for MIMO OFDM

Reply

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.

Reply

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.

Reply

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!

Reply

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.

Reply

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

very good
useful

Reply

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

very good

Reply

Leave a Comment

Previous post:

Next post: