DSPRelated.com
Forums

Implementaion of OFDM using matlab

Started by veen...@gmail.com May 23, 2008
Im doing a project on OFDM, the block diagram and the simulation code used is present in the following path

http://www.skydsp.com/publications/4thyrthesis/code.html

Below are my questions regarding OFDM and also on this code. Kindly help me on this as early as possible. Im in a hurry please...

1. At the beginning of transmission, we are getting the digital signal, is the signal getting converted to Analog before traveling through the medium?

If yes, where are we doing this D/A conversion? Or if we are sending the digital signals through the medium, they are immune to noise since they are digital what is it happening exactly?
2. Mathematical representation of SNR as related to OFDM?

They have used a the below code for SNR:
if SNR < 300,

SigPow = std(TimeSignal); %find the signal power
NoiseFac = 10^(0-(SNR/20));
TimeSignal = TimeSignal + randn(1,length(TimeSignal))*SigPow*NoiseFac;
end

Here if im not wrong, They are converying the ndb value set in the settings.m file to normal value. But, normally the db value for power is converted to normal value by taking a anti log of it i.e; 10^(SNR/10).
But in the code they have used 10^(0-(SNR/20)); I dont understand wht they have used this equation.

3. There are lots of equations used to calulate BER/SNR/Signal Power/Noise power/RMS valu etc.. dont know what is the exact equations used. Can you plase suggest the document where I can find all the equations used in the code? It will help me in understanding the code.
Or can you just mail the exact equations used to write the code so that if the matlab version is not understanble i can try with normal equations.

4. There are Two headers in the code, One with f=0.25 and the other with f=0.117. What do they signify?

Generate a set of tones for the pre and post signals

f = 0.25; %Frequency 0.5 = nyquist rate

N = (ifftsize+guardtime)*8;

Header = sin(0:f*2*pi:f*2*pi*(N-1));

f = 0.117;

Header = Header + sin(0:f*2*pi:f*2*pi*(N-1));

5.What do you mean by scaling the signal? Why are we doing that? Please let us know the significance of FullScaleFlag variable used in the code.
The following piece of code is present in imagetx.m file. Please explain

Scale the signal
%================disp([\'N: \' num2str(N)]);
Len=length(TimeSignal);
disp([\'Lenght: \' num2str(Len)]);
MaxSig = max(abs(TimeSignal(N:length(TimeSignal)-N))); %Find the max of the OFDM signal
%removing the header and trailer before
%finding the maximum
RMSSig = std(TimeSignal(N:length(TimeSignal)-N));
if (FullScaleFlag==1)
TimeSignal = TimeSignal*FullScale/MaxSig;
RMSSig = RMSSig/MaxSig*FullScale;
MaxSig = FullScale;
else
TimeSignal = TimeSignal*sqrt(TxSignalPow)/RMSSig;
ind = find(abs(TimeSignal)>0.9999); %Clip the signal to -1 to +1
TimeSignal(ind) = ones(size(ind)).*sign(TimeSignal(ind))*0.9999;
%Recalculate the Maximum and the RMS signal
MaxSig = max(abs(TimeSignal(N:length(TimeSignal)-N)));
RMSSig = std(TimeSignal(N:length(TimeSignal)-N));
end

Kindly reply with the answers as early as possible and do the needful.
Thanks,
Veena