Alamouti STBC

by Krishna Sankar on October 16, 2008

In the recent past, we have discussed three receive diversity schemes – Selection combining, Equal Gain Combining and Maximal Ratio Combining. All the three approaches used the antenna array at the receiver to improve the demodulation performance, albeit with different levels of complexity. Time to move on to a transmit diversity scheme where the information is spread across multiple antennas at the transmitter. In this post, lets discuss a popular transmit diversity scheme called Alamouti Space Time Block Coding(STBC). For the discussion, we will assume that the channel is a flat fading Rayleigh multipath channel and the modulation is BPSK.

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

3. However, Alamouti suggested that we 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. In the third time slot send and from the first and second antenna.In fourth time slot, send and from the first and second antenna and so on.

4. Notice that though we are grouping two symbols, we still need two time slots to send two symbols. Hence, there is no change in the data rate.

5. This forms the simple explanation of the transmission scheme with Alamouti Space Time Block coding.

Figure: 2-Transmit, 1-Receive Alamouti STBC coding

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, 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 randomly varying in time. However, the channel is assumed to remain constant over two time slots.

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

with and .

7. The channel is known at the receiver.

Receiver with Alamouti STBC

In the first time slot, the received signal is,

.

In the second time slot, the received signal is,

.

where

, is the received symbol on the first and second time slot respectively, 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 time slots.

Since the two noise terms are independent and identically distributed,

.

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

.

Let us define . To solve for , we know that we need to find the inverse of .

We know, for a general m x n matrix, the pseudo inverse is defined as,

.

The term,

. Since this is a digonal matrix, the inverse is just the inverse of the diagonal elements, i.e

.

The estimate of the transmitted symbol is,

.

If you compare the above equation with the estimated symbol following equalization in Maximal Ratio Combining, you can see that the equations are identical.

BER with Almouti STBC

Since the estimate of the transmitted symbol with the Alamouti STBC scheme is identical to that obtained from MRC, the BER with above described Alamouti scheme should be same as that for MRC. However, there is a small catch.

With Alamouti STBC, we are transmitting from two antenna’s. Hence the total transmit power in the Alamouti scheme is twice that of that used in MRC. To make the comparison fair, we need to make the total trannsmit power from two antennas in STBC case to be equal to that of power transmitted from a single antenna in the MRC case. With this scaling, we can see that BER performance of 2Tx, 1Rx Alamouti STBC case has a roughly 3dB poorer performance that 1Tx, 2Rx MRC case.

Mr. Krishna, your posts have been very helpful for me… thank you so much..
I am trying to implement alamouti scheme on optical transmission simply by changing the random channel h(2,N) but I keep getting 50% BER when changing h …. any Idea why ?

I can’t understand why you made the line:
hMod = kron(reshape(h,2,N/2),ones(1,2)); % repeating the same channel for two symbols
can’t we just create two random channels? or is this affecting the hEq Matrix ?

i am working on the video transmission project..but um geeting an error in dis…i hope you can figure it out..
function mpegproj
% MPEG-2 style coding. This function will get a movie, encode
% it, decode it, and write the MPEG data and both movie versions to disk
% for later playback.

%%
function movdata = getmov(nf)
% Choose the movie to process. Each movie must be saved to disk in a .mat
% file. The .mat file should contain a variable named ‘mov’ that is a
% MATLAB movie.
%
% See loadFileYuv and loadFileY4m for help converting movies from YUV and
% Y4M format to MATLAB movies.

@shona: Most of the articles in this blog assume a random binary data and use the underlying communication pipe to communicate. For some more articles tagged under MIMO, please check outhttp://www.dsplog.com/category/mimo/

possible same information means x1,x2 use audio otherwise x1,x2 use video so interference
another ques. they use x1 audio and x2 use video in stbc alamoutis ?
sir this type information available on any book name ya website link pleeeeeeeeeeee

hello sir ,
i want help in ostbc. u have a code of ostbc for bpsk in rayleigh fading channel .
but i need the same code for nakagami channel . the BER of ostbc for bpsk in nakagami -m fading channel.
sir plz help . i already commented you many times before.
so plz help me.

when i scale the signal by the factor 1/sqrt(nTx), then the ber increase with increase the number of antenna?
note: i use stbc with mimo-ofdm in awgn channel, sucha that the received signal
r=H(s+n),,, is this true

excuse me i have a question about mimo stbc.
if i have more than two transmitt antenna ( 3,4 …etc) how i can normlize the transmitted power.
is this by number of transmit antenna, but this not true because the ber is increase with increasing number of transmit antenna.
thank you

hi everyone !
I am studying about space time coding STBC in SISO system. I have to simulate in matlab 1 system one tranmisster and one receiver with fading rayleigh.
I tried my best but i can not simulate. Who can help me. Please !!

i meant that if you take a look at the paper you will find that for 2TX and 1RX the bit error rate is start at 10^-2 and E\N is around 13
but in the simulation for 2TX and 1RX the bit error start at 10^-1 and the E\N around 24
is this has any effect ?
and you can get the same output in the paper by make some changes in the general formula at the end of simulation and use this formula

pAlamouti = 1/8 – 1/8*(1+2./EbN0Lin).^(-1/2);

theoryBerAlamouti_nTx2_nRx1 = pAlamouti.^2.*(1+2*(1-pAlamouti));
instead of the original one

@abdallah: Well, I compared our simulations with the original paper:
In our simulation, the 10^-2 is around 13dB, 10^-3 is around 14dB, 10^-4 is around 19dB
In the paper too, the 10^-2 is around 13dB, 10^-3 is around 14dB, 10^-4 is around 19dB
Not sure where you are seeing the difference?

I had a problem with the detection of the symbols, i had a lot of errors, but i fix its, plaz if you can help me to introduce interference, i cannot find the formula for that..

I have already simulate alamoyti 2×1 and now i want to go further, i want to introduce interference and my channel become Y=Hs+n+I, where I is the interference, assuming that Interference power=1 and distance=100 what is the new formula for sigma to introduce interference and compare it with alamouti without interference..

Thank you very much for all the nice posts you make.
I want to ask regarding the Alamouti. You mentioned that Alamouti is similar to MRC in BER performance. And in the context of MIMO, Alamouti is said to achieve full diversity.

My confusion is, since the channel is block fading and the antenna paths are uncorrelated, what will be the effect of sending [x1 x1; x2 x2]. So you send the same signal in both antennas and do MRC. In this case, how would the performance change?

@Maduranga: Sending the same signal from both the antennas does not provide any diversity gain.
For eg, consider a 2tx-1rx system having
y = h1x + h2x + n, where
y – is the received symbol
h1 – channel from tx antenna 1 to rx antenna
h2 – channel from tx antenna 2 to rx antenna
x – transmitted symbol
n – noise
The above can be written as
y = (h1+h2)x + n, which kinda gives similar BER performance to y = hx+n case

I am trying to implement Alamoutis 2×1 but when i am trying to check my bits are wrong. i do not know where is the problem. i am trying to solve the problem 2 days now.. and still nothing.. Plz can you help me…. I am using N=2 just only to compare my data…

Dear sir;
i want to thank u first about BER for 2 transmit 2 receive Alamouti STBC using BPSK modulation in rayl channel it help me a lot .Second can you show me how to modify this using QAM modulation . glad if u can help me plz.

Hello sir, need your assistance please.
I am writing my thesis by comparing MIMO and MC -CDMA applications. I am not so good in matlab, can you please show me how write the code for this matlab file with rayleigh channel. My modulation is (8 OR 16 QAM ) because my final report will be on beyond 3G technology. thank you

@khushi: Hmm…
1. sCode(:,1:2:end) –> taking every other element from the column, starting from the first element
2. sCode(:,2:2:end) –> taking every other element from the column, starting from the second element

hi
i am working on channel estimation.problem i am facing is how to write a code for higher order modulations at ofdm transmitter i.e.8 qam and above.how to write a code for a matrix relaed to received signal data pl guide

can you help me please, i read a lot of your articles, that helped me a lot.
Hi, i have to finish my thesis by comparing some Ber curves. I am not so good in matlab, can you please show me how to modify your matlab file without rayleigh channel. (MISO channel without OFDM and only with AWGN channel, ) My modulation is QPSK but i think the ber curver are the same as for BPSK.
I have to be ready for 12 genn
If it helps, here are other Ber graphics: (with/without Rayleigh, MIMO)http://zdarova.it/tesi/7genn/differenza%20tra%208%20curve.fig

Hi
My question is that if we compare MIMO system with single antenna system, how we make fair comparison by setting same power for both case.
for example, consider two antenna at transmitter like 2 X 1 alamouti scheme, if power=1 is used for single antenna system, so it will be half poer for each antenna to make fair comparison. Am I wright.

@KimMyungsong: For QPSK demod, instead of qpskdemod(), you can try something as simple as
ipHat1 = real(yHat)>0
ipHat2 = imag(yHat)>0
Make sure that we do the ungrouping of each constellation symbol into two bits correctly.

hi krishna,
ur code is excllent for BPSK for 2X1 .
i have modified it for MPSK and MQAM to calculate BER.
its working for 4,8 psk but doesnt give proper curve for 16psk.
is it necessary to demodulate signa at receiver side??
i have used c=modem.pskdemod(M,(360/M)) for demodulation after ML decoding.
is it correct or not???

Hello Krishna,
After the sentence “The estimate of the transmitted symbol is,” you multiplicate the the channel matrix inverse and the [y1 y2*] . The typo mistake in my opinion is that y2* depends on x2 and not x2* as you have written. So the estimation vector is [x1 x2] and not [x1 x2*]. Agree ? Apart from that you have forgotten the conjugation for x1 in the formula after the sentence “In the second time slot, the received signal is,”
The rest is a good work, thank you !

The prob. dens. function of your flat fading channel looks strange. I used dfittool with the data input abs(h) to create the PDF. It looks like a rayleigh pdf with sigma = 1 but multiplied by sqrt(2). Is there any particular reason for this? I’m using jakes model for flat fading and the pdf i get is the same as;
x = 0:0.1:3;
p = raylpdf(x,1);
plot(x,p)

Till now u have worked on ALMOUTI full rate schemes(2 tx* 2 rx). will u extend this work on fractional rate(e.g. 3 tx – 4 rx or any other combination like e.g 4 tx * 3rx). if u have any idea of implementing STBC with antenna selection{ a technique which is used to select specific antenna’s (let 2& 4) out of given four antenna’s at receiver end }. if u have any matlab program for antenna selection plz send to me

thanks very for providing a very gud understanding of AL.STBC
krishna can u plz tel me ..
can u use the matlab builtin command: rayleighchan(ts,fd)
same for bpsk modulation command :psk.modem..will it work correctly becoz in ur all codes u have made ur own qpsk n bpsk modulators…plz help me ..n one more thing to ask if m using mimo ofdm then can i considered channel as flat fading channel as u did in it..bcoz of ofdm each subcarrier will suffer flat fading instead of frequency selective fading..plz do comment whether m right or wrong
many thanks in advance
waiting for ur reply

can you help me please,
i am doing project based on MIMO-OFDM for reduction of peak to average power ratio. in this case i am using CI-OFDM with SFBC instead of STBC.
can you suggest any better technique than CI-OFDM, and how to write matlab code for CI-OFDM with SFBC.
thank you sir.

this CI-OFDM scheme provide frequency diversity benefit and also reduces the peak to average power ratio(for preventing non linear distortion of High Power Amplifier).
First this(CI) scheme used at MC-CDMA. Now this(CI) used at OFDM.
this block used between SFBC encoder and OFDM block.

please tell me when simulating the almouti scheme….
one matlab keyword using is “kron” that leads to kronecker tensor product. but in the literature it is mentioned that kronecker algebra is being used for almouti scheme.
please tell me what is significance of using “kron” when coding for STBC.

@surbhi: In the Matlab code, I used kron() to do all the operations as matrix operations and to avoid for-loops. Using kron() does not have any theoretical significance in understanding Alamouti STBC coding.

Thank u krishna for your help…..
If my viewpoint didn’t clear, can u please read the pages (6-7) of this book (MIMO Wireless Communications.2007) in this web site :-www.4shared.com/file/112621705/f9ab90f6/MIMO_Wireless_Communications2007.html
It will give u a clear overview of what I had pointed to
Thank u again dear Krishna

@mohanad: I looked at Fig 1.3 in the reference which you pointed. As you said,
a) the vertical co-ordinate ‘dB’ corresponds to attenuation of the channel.
b) the horizontal co-ordinate ‘tones’ corresponds to frequency i.e attenuation vs frequency and
c) the horizontal co-ordinate ‘samples’ corresponds to many realization of the channel i.e attenuations vs time

@mohanad: Am not sure, I fully understood your question nor the code which you have posted. Typically, more the distance, higher will be the RMS delay spread of the channel.
One good reference for MIMO channel model is defined by the High Throughput study group for 802.11n standards development –
Tgn Channel Models, Vinko Erceg et al. The document provides a good overview of MIMO channel modeling – including the effect of antenna correlation (based on antenna spacing). effect of fluorescent lights, doppler, indoor multipath characteristics.

I’ve just studied a bit about transmit diversity scheme of Mr Alamouti. I just have some general questions.
1. Can you tell me why Alamouti scheme is introduced? in fact it is 3dB poorer than MRC.
2. If we use this scheme we’ll need double power in order to get the similiar BER curve like MRC. I just wonder why?
3. Could you suggest me a recevier which is with lower complexity than the MLSE

I know that i don’t have much time but hope you enjoy answering and discussing some questions. thanks in advance

@Phan Minh Hoang: My replies
1. Though it is 3dB poorer than MRC, Alamouti scheme provided a way where we can put the complexity of two transmit antennas at the base station side. If you recall, when Alamouti scheme came about circa 1998, there were not too many takers where a mobile device can have multiple receive antennas

Hi,Krishna,would you help me coding a program about Maximum Likelihood Detection for Alamouti-STBC system? Under QPSK modulation condition,My program didn’t get perfect result,So I’d like to see your help.Thanks!

I would think that the Zero forcing equalizer discussed in this post is optimal (and gives the same performance as ML) for Alamouti STBC system. Hence, I think it should be reasonably simple to extend this post to QPSK systems.

I already read the receive diversity blog, and I need to simulate alamouti 2X1 with channel correlation, how can I implement in the code because I only find the theoretical formula, I hope you can help me with this issue.
Regards

@sara: Sorry, I have not worked on co-operative communications. Anyhow, trying to answer the queries:
1/. Typically, the type of equalizer which is selected depends on the complexity considerations and the performance gain
2/, I think equalizer takes care of the job to effectively combine the signal resulting in minimal BER.

hi krishna..do we need to divide the snr by 2 in the equation of bpsk to get qpsk curve in theoretical case or is it the same..or is it like only for high snr case only..for finding the probablity of error for diversity schemes ..im bit confused about that can u pls tel that

I’m here with one more doubt. I have a project on transmitter diversity. Can the alamouti scheme be applied to the UPLINK for CDMA systems– (where noise interference would be due to multiple users) ? Or it has to be at the base station ? I am having this conceptual doubt …

Sorry to have asked so many questions at one go..
Would be really grateful if you could help! Thanks!

@UP: Well, theoretically there is nothing stopping us from using Alamouti STBC in either uplink or downlink. In the past, I recall reading that Alamouti coding is done at the Base station (which has more computational power and more transmit atennas) and the subcriber stations (have the capability for doing demodulation).

@UP: Well, the brute force ML method is to find the minimum of error between received transmit constellation and receieved constellation. However, I think there is no advantge in doing the brute force ML as the hard decision decoding is also optimal, agree?

one more thing the equation u have given the above link its wrong..they have small printing mistake so its better to look in this text book .R. Janaswamy, Radiowave Propagation and Smart Antennas for Wireless Communications.
Kluwer Academic Publishers, 2000.

hi krishna,
Thanks for your excellent work.
I am doing a work on MIMO-OFDM with Alamouti 2×1 code.Would you like to send me a matlab code for flat rayleigh fading channel with QPSK modulation?Furthermore,would you model it using the simulink toolbox and send me a *.mdl file?
Hoping your replay.
Thanks very much.

hi krishna..do we need to divide the snr by 2 in the equation of bpsk to get qpsk curve in theoretical case or is it the same..or is it like only for high snr case only..im bit confused abot that can u pls explain it

Krishna: At first, good post.
Now, few questions: You wrote “For convineance, the above equation can be represented in matrix notation as follows:”..and this is followed by a matrix notation of the system response. I find that in such a matrix, the functionality of X* has been moved to H*. Although we are allowed to do such operations freely, in practise it seems to suggest that the channel reposnse during the second time slot is the complext conjugate of its own response in the first time slot – right? Don’t you think over a short interval of time such a generalization is rather too extreme?
In my view, transmitting X* during second time slot is going to be totally independant of channel reposnse during its transmission. So, convertibility between X* to H* is not going to be simple over such short time periods. May be over the long it’s possible…

@DRAM: For STBC, we assume that the channel is same over two time slots. Given that we make the assumption, its just for mathematical notional convineance, we formulate the channel in matrix form by using H*. So, the fact that we are using H* in matrix notation does not mean that the channel H in first time slot became H* in the second time slot. Hope this helps.

First you should try to duplicate the process (2×1) of equalization for the second receiving antenna and retrieving data using only the second antenna, you should obtain the same BER.

Then you can use MRC to obtain BER of 2×2 correctly, note that as stated before the equations for MRC and Alamouti equalization are the same so when after equalizating Alamouti at the second (or duplicated process) antenna applying MRC is reduced to add both of “yHat”

@lia: Yes, when there is cross-coupling ZF and MMSE wont be optimal.
However, in the presence of Alamouti coding, the coding structure ensures that there is no cross-coupling. So ZF is optimal even in 2Tx 1Rx Alamouti case.

I would think that, to extend to 2Tx, 2Rx case one needs to write the received symbol equations for the second antenna in addition. The information from multiple rx antennas can be combined the MRC way (i think). I need to write the equations to confirm. Can you please try that. Please share your results.

@Paul: The E{.} operator find the mean of a set of observations. The E{.} operator is used to show that mean of |n1}^2 corresponds to noise variance. The mean of n1*n2 = 0 as the noise is uncorrelated.

@farie: No, I do not. However, may I suggest that debugging 4QAM, 16QAM cases should be reasonably easy. I think as a first step, you can try with
(a) Make all the channel coefficients unity
(b) No noise.

Once you are able to receive perfectly what was transmitted, then move on to add channel and noise.

@ila: Can you please point to the line in the code where the error in the note is present?
Also, kindly do note that in the simulation model, to speed up simulation time, I have tried to use matrix operations as far as possible. For doing so, I may have played around with matrix dimensions (which might not be very intuitive). Hopefully the comments help.

Similar equalization should hold good for QPSK too. Try for a no-noise case, see whether you can recover the QPSK symbols accurately.