function signal = ifft_ofdm_basesignal_gen(NDLRB,maxl,a);
Ts = 1 / ( 15000 * 2048 ) ; % basic time unit £»
NRBSC = 12; % subcarriers in a resource block £»
if maxl == 7 % normal cyclic prefix ;
dealtf = 15000; % subcarrier spacing
N = 2048 ; % a constant different with subcarrier spacing £»
% insert 0 in the middle of all subcarribers for ifft ;
for l=1:maxl
a (( NDLRB * NRBSC / 2 + 2 ) : ( NDLRB * NRBSC + 1 ) , l ) = a (( NDLRB * NRBSC / 2 + 1 ) : NDLRB * NRBSC , l ) ;
a ( ( NDLRB * NRBSC / 2 + 1 ) , l ) = 0 ;
end
% coefficient of ifft ;
for n = 1 : N ;
e ( n ) = exp( j * 2 * pi / N * ( - floor( NDLRB * NRBSC / 2 ) ) * ( n - 1 ) );
end
e = [e;e;e;e;e;e;e];
e1 = e.';
% ifft ;
signal0 = e1 .* ifft ( a , N )*N ;
% add cp ;
for l = 1 : maxl
if l == 1
TCP = 160 ;
CP = signal0 ( ( N-TCP+1 ) : N ,l) ;
signal ( 1 : TCP , l ) = CP;
signal ( ( TCP + 1 ) : ( TCP + N ) , l ) = signal0 ( : , l );
elseif l > 1
TCP = 144 ;
CP = signal0 ( ( N-TCP+1 ) : N , l ) ;
signal ( 1 : TCP , l ) = CP;
signal ( ( TCP + 1 ) : ( TCP + N ) , l ) = signal0 ( : , l );
end
end
end
if maxl == 6 % extended cyclic prefix and subcarrier spacing of 15KHz
dealtf = 15000;
N = 2048 ;
TCP = 512 ;
signal = zeros ( ( N + TCP ) , maxl );
% insert 0 in the middle of all subcarribers for ifft ;
for l = 1 : maxl ;
a (( NDLRB * NRBSC / 2 + 2 ) : ( NDLRB * NRBSC + 1 ) , l ) = a (( NDLRB * NRBSC / 2 + 1 ) : NDLRB * NRBSC , l ) ;
a ( ( NDLRB * NRBSC / 2 + 1 ) , l ) = 0 ;
end
% coefficient of ifft ;
for n = 1 : N ;
e ( n ) = exp( j * 2 * pi / N * ( - floor( NDLRB * NRBSC / 2 ) ) * ( n - 1 ) );
end
e = [e;e;e;e;e;e];
e1 = e.';
% ifft ;
signal0 = e1 .* ifft ( a , N )*N ;
% add cp ;
for l = 1 : maxl
CP = signal0 ( ( N-TCP + 1 ) : N , l ) ;
signal ( 1 : TCP , l ) = CP;
signal ( ( TCP + 1 ) : ( N + TCP ) , l ) = signal0 ( : , l );
end
end
if maxl == 3 % extended cyclic prefix and subcarrier spacing of 7.5KHz
dealtf = 7500 ;
N = 4096 ;
TCP = 1024 ;
signal = zeros ( ( N + TCP ) , maxl );
% insert 0 in the middle of all subcarribers for ifft ;
for l = 1 : maxl ;
a (( NDLRB * NRBSC / 2 + 2 ) : ( NDLRB * NRBSC + 1 ) , l ) = a (( NDLRB * NRBSC / 2 + 1 ) : NDLRB * NRBSC , l ) ;
a ( ( NDLRB * NRBSC / 2 + 1 ) , l ) = 0 ;
end
% coefficient of ifft ;
for n = 1 : N ;
e ( n ) = exp( j * 2 * pi / N * ( - floor( NDLRB * NRBSC / 2 ) ) * ( n - 1 ) );
end
e = [e;e;e];
e1 = e.';
% ifft ;
signal0 = e1 .* ifft ( a , N )*N ;
% add cp ;
for l = 1 : maxl ;
CP = signal0 ( ( N-TCP + 1 ) : N , l ) ;
signal ( 1 : TCP , l ) = CP;
signal ( ( TCP + 1 ) : ( N + TCP ) , l ) = signal0 ( : , l );
end
end