%OFDM with Guard Interval.m
clc;
clear;
delay=5;
GI=6;
nIters=2;
LogEbNo=[5:5:40];
lenSim=length(LogEbNo);
BitStreamLength=64*500;
BitStreamo=randint(BitStreamLength,1,2)';
[ModulatedSymbol]=DQPSKEncoder(BitStreamo);
for EbNoIndex=1:lenSim
EbNo=10^(LogEbNo(EbNoIndex)/10);
TSBO=EbNo.*ModulatedSymbol;
y=buffer(TBSO,64);
q=length(ModulatedSymbol)/64;
u=ifft(y);
for i=1:q
a=u(:,i);
a1=[a.'a(1:6)'];
u1(:,i)=a1.';
end
s=u1(:).';
s1=s/2;
v=length(s1)-delay;
ss=[randn(1,delay)s1(1:v)];
s2=ss+s;
for iters=1:nIters
[RBS]=AWGNChannel4(s2);
k=(64+GI);
w=buffer(RBS,k);
k1=length(s1)/k;
for i=1:64
for j=1:k1
h1(i,j)=w(i,j);
end
end
h=fft(h1);
DI=h(:).';
RRBS=clip(DI);
[OBS]=DQPASKDecoder(RRBS);
Errors=sum(OBS~=BitStreamo);
BER(iters)=Errors/BitStreamLength
end
AvBER(EbNoIndex)=sum(BER)/nIters;
end
semilogy(LogEbNo,AvBER,'k')
grid
xlabel('Eb/No')
ylabel('BER')
title('OFDM with Guard Interval ')