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
Flat Fading in OFDM
Started by ●July 13, 2006
Reply by ●July 13, 20062006-07-13
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? > > > ShahinWhy 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
Reply by ●July 13, 20062006-07-13
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. > > PhilI 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.
Reply by ●July 14, 20062006-07-14
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...
Reply by ●July 14, 20062006-07-14
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.
Reply by ●July 14, 20062006-07-14
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...
Reply by ●July 14, 20062006-07-14
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 > ShahinI'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.
Reply by ●July 14, 20062006-07-14
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
Reply by ●July 14, 20062006-07-14
> 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. InBased 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
Reply by ●July 14, 20062006-07-14
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