DSPRelated.com
Forums

Flat Fading in OFDM

Started by Shahin July 13, 2006

     Dear all,

       I have modeled a simple OFDM modem using MATLAB. The model works
fine
     for AWGN channel, but when it comes to flat fading it does not
follow the theoretical
     curves. To implement the channel ( r = ax+n ) I generage "a" as
following:

     a = sqrt(0.5) * sqrt(randn( 1, ofdm_sym_size) + j*randn(
1,ofdm_sym_size));

     and after IFFT I multiply it to "x" which is the OFDM symbol:

     y = a.*x;
     r  = y + n;  % n is the AWGN

     The result is 0.5 BER for all SNRs. Where is the problem?


     Shahin

Shahin wrote:
> Dear all, > > I have modeled a simple OFDM modem using MATLAB. The model works > fine > for AWGN channel, but when it comes to flat fading it does not > follow the theoretical > curves. To implement the channel ( r = ax+n ) I generage "a" as > following: > > a = sqrt(0.5) * sqrt(randn( 1, ofdm_sym_size) + j*randn( > 1,ofdm_sym_size)); > > and after IFFT I multiply it to "x" which is the OFDM symbol: > > y = a.*x; > r = y + n; % n is the AWGN > > The result is 0.5 BER for all SNRs. Where is the problem? > > > Shahin
Why are you doing y = a.*x; ? If 'a' is supposed to be your channel, then you should be doing y = filter(a,1,x); . Let us know if the filtering works better. Phil
Phil wrote:
> Shahin wrote: > > Dear all, > > > > I have modeled a simple OFDM modem using MATLAB. The model works > > fine > > for AWGN channel, but when it comes to flat fading it does not > > follow the theoretical > > curves. To implement the channel ( r = ax+n ) I generage "a" as > > following: > > > > a = sqrt(0.5) * sqrt(randn( 1, ofdm_sym_size) + j*randn( > > 1,ofdm_sym_size)); > > > > and after IFFT I multiply it to "x" which is the OFDM symbol: > > > > y = a.*x; > > r = y + n; % n is the AWGN > > > > The result is 0.5 BER for all SNRs. Where is the problem? > > > > > > Shahin > > Why are you doing y = a.*x; ? > > If 'a' is supposed to be your channel, then you should be doing y = > filter(a,1,x); . > > Let us know if the filtering works better. > > Phil
I forgot to mention, the way that you have defined 'a' is not a flat channel. If I'm not mistaken, it is a raileigh without any decay in the time domain profile.
i think you are doing wrong at y = a.*x;

but i think whatever it is said that we have to do filtering operation
is right


for that matlab simulation you can refer nikolav kostov paper...

 Dear Phil,

       Many thanks for your reply, I tried filter() but I sill get the
same amount of error
   for all SNRs.

   Maybe the problem is in gerenating the coefficients for the filter
function. If I assume
   having a LTI system for duration of one ofdm symbol, to use the
filter function I need to
   have channel impluse reponse of the channel. Could you please adivse
me how
   generate the rayleigh fading channel so that I can use it with
filter function?
   (rayleighchan() function promisses to do so but I still get 0.5 BER
)

  Best regards
  Shahin



Phil wrote:
> Phil wrote: > > Shahin wrote: > > > Dear all, > > > > > > I have modeled a simple OFDM modem using MATLAB. The model works > > > fine > > > for AWGN channel, but when it comes to flat fading it does not > > > follow the theoretical > > > curves. To implement the channel ( r = ax+n ) I generage "a" as > > > following: > > > > > > a = sqrt(0.5) * sqrt(randn( 1, ofdm_sym_size) + j*randn( > > > 1,ofdm_sym_size)); > > > > > > and after IFFT I multiply it to "x" which is the OFDM symbol: > > > > > > y = a.*x; > > > r = y + n; % n is the AWGN > > > > > > The result is 0.5 BER for all SNRs. Where is the problem? > > > > > > > > > Shahin > > > > Why are you doing y = a.*x; ? > > > > If 'a' is supposed to be your channel, then you should be doing y = > > filter(a,1,x); . > > > > Let us know if the filtering works better. > > > > Phil > > I forgot to mention, the way that you have defined 'a' is not a flat > channel. If I'm not mistaken, it is a raileigh without any decay in > the time domain profile.
 Hi,

   Could you please give the title of paper you mentioned? I tried to
find something
  related in google using the keywaord:"nicolau kostov matlab", but no
success.

 Best regards
 Shahin



PARTICLEREDDY wrote:
> i think you are doing wrong at y = a.*x; > > but i think whatever it is said that we have to do filtering operation > is right > > > for that matlab simulation you can refer nikolav kostov paper...
Shahin wrote:
> Dear Phil, > > Many thanks for your reply, I tried filter() but I sill get the > same amount of error > for all SNRs. > > Maybe the problem is in gerenating the coefficients for the filter > function. If I assume > having a LTI system for duration of one ofdm symbol, to use the > filter function I need to > have channel impluse reponse of the channel. Could you please adivse > me how > generate the rayleigh fading channel so that I can use it with > filter function? > (rayleighchan() function promisses to do so but I still get 0.5 BER > ) > > Best regards > Shahin
I'm not surprised that you are getting a large amount of errors. The channel that you are generating will cause a very large amount of ISI unless you have a very long guard interval (cyclic prefix). At a very high SNR, try lengthning your cyclic prefix. Once long enough, this should remove the ISI so that your BER goes down. Also, I think that you should do some more reading about OFDM and channel modeling. Nothing too fancy, just enough to get the basics clear in your mind.
Shahin,  I've read through the other posts, but i don't think anyone
truly addressed your problem.

As far as i understand your issue, you want to implement a flat fading
channel.  Therefore, for now, you can disregard the issues dealing with
extending your cyclic prefix.  The equation you have is correct in it's
current form i.e.

r = ax+n

where you're assuming that the channel is resolved by a single fading
coefficient.

However, your problem, as i see it, is when generating the flat fading
channel coefficients {a}.  Your current implementation does not account
for the Doppler or temporal changes of the channel due to motion.  In
other words, you need some form of bandlimiting on the spectrum of the
fading channel - corresponding to the expected Doppler spectrum for
your application.  I highly recommend that you have a look at the
generation of statistical models for fading channels and then apply one
of the methods to your scenario.  The book
  author =       "T. S. Rappaport",
  title =        "{Wireless Communications}",
  publisher =    "Prentice Hall",
  year =         1996,
  address =      "Upper Saddle River NJ",

should give you some insight into the various fading models Clarke's,
Jakes etc.  For more in depth models, look at

  author =       {M. Patzold and U. Killat and F Laue and
                  Y. Li},
  title =        {{On the Statistical Properties of Deterministic
                  Simulation Models for Mobile Fading Channels}},
  journal =      {IEEE Transactions on Vehicular Technology},
  year =         1998,
  volume =       47,
  number =       1,
  pages =        {254-269},
  month =        {February},

Patzold has done a number of papers and books on this very subject, so
a search for his name should throw up useful references.

Hope that helps.


col


Shahin wrote:
> Dear all, > > I have modeled a simple OFDM modem using MATLAB. The model works > fine > for AWGN channel, but when it comes to flat fading it does not > follow the theoretical > curves. To implement the channel ( r = ax+n ) I generage "a" as > following: > > a = sqrt(0.5) * sqrt(randn( 1, ofdm_sym_size) + j*randn( > 1,ofdm_sym_size)); > > and after IFFT I multiply it to "x" which is the OFDM symbol: > > y = a.*x; > r = y + n; % n is the AWGN > > The result is 0.5 BER for all SNRs. Where is the problem? > > > Shahin
> extending your cyclic prefix. The equation you have is correct in it's > current form i.e. > > r = ax+n > > where you're assuming that the channel is resolved by a single fading > coefficient. > > However, your problem, as i see it, is when generating the flat fading > channel coefficients {a}. Your current implementation does not account > for the Doppler or temporal changes of the channel due to motion. In
Based on Col's comments, I think that I misunderstood the question being posed. If only one fading coefficient is to be used for the channel, as Col says, you can use your equation r = a.x + n. You can generate {a} as in your original post, but the spacing interval between each sample is around the coherence time of the channel. The gaps in between can be interpolated using a doppler filter as suggested by Col. Sorry for initially leading you astray. I've been working with broadband OFDM signals and frequency selective channels for too long. Based on your original email, I just automatically assumed you were using multiple channel coefficients. Phil
cb135@hotmail.com wrote:
> Shahin, I've read through the other posts, but i don't think anyone > truly addressed your problem. > > As far as i understand your issue, you want to implement a flat fading > channel. Therefore, for now, you can disregard the issues dealing with > extending your cyclic prefix. The equation you have is correct in it's > current form i.e. > > r = ax+n > > where you're assuming that the channel is resolved by a single fading > coefficient. > > However, your problem, as i see it, is when generating the flat fading > channel coefficients {a}. Your current implementation does not account > for the Doppler or temporal changes of the channel due to motion. In > other words, you need some form of bandlimiting on the spectrum of the > fading channel - corresponding to the expected Doppler spectrum for > your application.
Col, thanks for your explanation and references. To start from the first step I decided to chose stationary (no Doppler) flat fading channel. Since I got the correct curve for single carrier modulation using the method I mentioned before, I thought it will work for OFDM as well, but aparantly its not. Is there anything special I need to consider for get the curve for OFDM ? Best regards Shahin