c=1/(1+exp(-1/2)+exp(-1)+exp(-3/2));
h=[sqrt(c) sqrt(c*exp(-1/2)) sqrt(c*exp(-1)) sqrt(c*exp(-3/2))];
close all
clear all
M =4;
Subcarrier=256;
Nsymbol=10;
Ncp=24;
K = log2(M);
Nbit=K*Nsymbol*Subcarrier;
Nframe=1000;
%delay=2;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ber=[];
EbNo=2;
% Nerrors=0;
% for j=1:Nframe
dataIn=randi([0 1],Nbit,1);
dataInMatrix=reshape(dataIn, length(dataIn)/K,K);
dataSymbolsIn=bi2de(dataInMatrix);
dataMod=qammod(dataSymbolsIn,M);
dataMod1=dataMod/(sqrt(2));
% scatterplot(dataMod1)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dataMod2=reshape(dataMod1,Subcarrier,Nsymbol);
dataMod3=sqrt(Subcarrier)*ifft(dataMod2,Subcarrier);
dataMod4=zeros(Subcarrier+Ncp,Nsymbol);
dataMod4(1:Ncp,:)=dataMod3(length(dataMod3)-Ncp+1:length(dataMod3),:);
dataMod4(Ncp+1:Subcarrier+Ncp,:)=dataMod3(1:length(dataMod3),:);
dataMod5=reshape(dataMod4,1,(Subcarrier+Ncp)*Nsymbol);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
snr= EbNo + 10*log10(K);
c=1/((1+exp(-1/9)+exp(-2/9)+exp(-3/9)+exp(-4/9)+exp(-5/9)+exp(-6/9)+exp(-7/9)+exp(-8/9)+exp(-1)));
h=[sqrt(c) sqrt(c*exp(-1/9)) sqrt(c*exp(-2/9)) sqrt(c*exp(-3/9)) sqrt(c*exp(-4/9)) sqrt(c*exp(-5/9)) sqrt(c*exp(-6/9)) sqrt(c*exp(-7/9)) sqrt(c*exp(-8/9)) sqrt(c*exp(-1))];
Pn=10^(-snr/10);
dataMod6=conv(h,dataMod5);
rS=dataMod5+sqrt(Pn)*sqrt(0.5)*(randn(1,2800)+i*randn(1,2800));
% rS=rS*(1/H)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% delay %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% rs=zeros(1,length(rS));
% rs(1,delay+1:end)=rS(1,1:length(rS)-delay);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
rS1=reshape(rs,Subcarrier+Ncp,Nsymbol);
rS1(1:Ncp,:)=[];
rS2=fft(rS1,Subcarrier)/sqrt(Subcarrier);
rS3=reshape(rS2,1,Subcarrier*Nsymbol);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Synchronization in time %%%%%%%%%%%%
scatterplot(rS3)
dataSymbolsOut1=qamdemod(rS3,M);
dataOutMatrix1=de2bi(dataSymbolsOut1,K);
dataoutMatrix=reshape(dataOutMatrix1,numel(dataOutMatrix1),1);