Sign in

username:

password:



Not a member?

Search matlab



Search tips

Subscribe to matlab



matlab by Keywords

Atanh | Autocorrelation | Bandpass Filter | C++ | Conv | Database | Deconv | Excel | FFT | Filter | Filtering | FIR | Fourier Transfrom | FSK | Gaussian Noise | Haykin | IFFT | Image | Java | LFSR | LMS | LPC | MEX | OFDM | QPSK | Radix | Random | Sampling | Segmentation | Simulink | Visual Basic | Waveform | Wavelet

Discussion Groups

Discussion Groups | Matlab DSP | OFDM System

Technical discussion about Matlab and issues related to Digital Signal Processing.

  

Post a new Thread

OFDM System - Moayid Ahmed - Jun 25 7:19:25 2008



Hi,
I'm new member in this group. I'm trying to do MATLAB code for OFDM Tx and Rx and measure and
plot all the system parameters like BER, PAPR, Synchronization, Channel Estimation and others.
here is my first and starting attempt. can any one help me to complete this program?
Regards.
Here is my initial program
clear all; 
close all; 
clc;
%========================================================================
% OFDM Simulation - OFDM.m
    % OFDM System Parameters
    N           = 64;    % length of OFDM IFFT (16,32,64,...,2^n)
    M           = 16;    % number of QAM constellation points (4,16,64,256)
    numOfZeros  = N/4+1;   % numOfZeros must be an odd number and lower 
                           % than N. The zero padding operation is
                           % necessarry in practical implementations.
    GI          = 1/4;     % Guard Interval (1/4,1/8,1/16,...,4/N)
    BW          = 20;      % OFDM signal Band width in MHz
    numOfSym    = 128;     % number of OFDM Symbols
    EbNo = 0:20;

    % data generation randint
    %
    txData = randint(N-numOfZeros,numOfSym,M,0); 
    % QAM modulation
    txDataMod  = qammod(txData,M);
mean(abs(txDataMod(:,2)).^2); 
    txDataZpad = [txDataMod((N-numOfZeros+1)/2:end,:);...
                  zeros(numOfZeros,numOfSym);...
                  txDataMod(1:(N-numOfZeros-1)/2,:)];
  %=======================================================================   
   % IFFT
    txDataZpadIfft = sqrt(N)*ifft(txDataZpad,N);
 %=======================================================================
 % Apply windowing function to each time domain waveform
 for i = 1:numOfSym
    txDataZpadIfft1(:,i) = (txDataZpadIfft(:,i)).*hamming(N);
   
end
 % Guard Interval Insertion
txDataZpadIfftGI = [txDataZpadIfft1((1-GI)*N+1:end,:);txDataZpadIfft];
%cp insertion   
txDataZpadIfftGI1 = reshape(txDataZpadIfftGI,1,10240);
% Add Noise
Tx_Signal_Power = var(txDataZpadIfftGI1);
SNR = 20;
Linear_SNR = 10^(SNR/10);
Noise_Sigma = Tx_Signal_Power/Linear_SNR;
Noise_Scale_Factor = sqrt(Noise_Sigma);
Noise = randn(1,length(txDataZpadIfftGI1))*Noise_Scale_Factor;
Tx_NoisyData = txDataZpadIfftGI1+Noise;
% ========= receiver part =======================
txDataZpadIfftGI11 = reshape(Tx_NoisyData,80,128);
    % Guard Interval removal
    rxDataZpadIfft  = txDataZpadIfftGI(GI*N+1 : N+GI*N,:);
 %=======================================================================
    % FFT operation
    rxDataZpad      = 1/sqrt(N)*fft(rxDataZpadIfft,N);
 %=======================================================================
    % zero removal and rearrangement
    rxDataMod       = [rxDataZpad((N-(N-numOfZeros-1)/2+1):N,:);...
                      rxDataZpad(1:(N-numOfZeros+1)/2,:)];
    % demodulation
    rxData =qamdemod(rxDataMod*sqrt(10),M);
   
%==========================================================================
%==========================================================================



(You need to be a member of matlab -- send a blank email to matlab-subscribe@yahoogroups.com )