Inserts scattered pilot and auxiliary pilot symbols in the FBMC-OQAM frame. function d_data_pilot=FBMC_OQAM_InsertScattteredPilot(d_data,Para) The function works for SISO systems. Input arguments: d_data: matrix [Para.nSubcarriers, 2*Para.Ns] containing data symbols. Para: structure containing the modulation parameters. Outputs arguments: d_data_pilot: matrix [Para.nSubcarriers, 2*Para.Ns] containing data and pilots symbols. References: [1] J. P. Javaudin, D. Lacroix, and A. Rouxel, "Pilot-aided channel estimation for OFDM/OQAM," in The 57th IEEE Semiannual Vehicular Technology Conference, 2003., vol. 3, pp. 1581–1585 vol.3, April 2003. [2] T. Stitz, T. Ihalainen, A. Viholainen, and M. Renfors, "Pilot-based synchronization and equalization in filter bank multicarrier communications," EURASIP Journal on Advances in Signal Processing, vol. 2010, p. 741429, Feb 2010.
0001 function d_data_pilot=FBMC_OQAM_InsertScattteredPilot(d_data,Para) 0002 % Inserts scattered pilot and auxiliary pilot symbols in the FBMC-OQAM frame. 0003 % 0004 % function d_data_pilot=FBMC_OQAM_InsertScattteredPilot(d_data,Para) 0005 % 0006 % The function works for SISO systems. 0007 % 0008 % Input arguments: 0009 % 0010 % d_data: matrix [Para.nSubcarriers, 2*Para.Ns] containing data symbols. 0011 % 0012 % Para: structure containing the modulation parameters. 0013 % 0014 % Outputs arguments: 0015 % 0016 % d_data_pilot: matrix [Para.nSubcarriers, 2*Para.Ns] containing data and pilots symbols. 0017 % 0018 % References: 0019 % [1] J. P. Javaudin, D. Lacroix, and A. Rouxel, "Pilot-aided channel 0020 % estimation for OFDM/OQAM," in The 57th IEEE Semiannual Vehicular 0021 % Technology Conference, 2003., vol. 3, pp. 1581–1585 vol.3, April 2003. 0022 % [2] T. Stitz, T. Ihalainen, A. Viholainen, and M. Renfors, "Pilot-based 0023 % synchronization and equalization in filter bank multicarrier 0024 % communications," EURASIP Journal on Advances in Signal Processing, vol. 0025 % 2010, p. 741429, Feb 2010. 0026 0027 % This file is part of WaveComBox: www.wavecombox.com and is distributed under the terms of the MIT license. See accompanying LICENSE file. 0028 % Original author: François Rottenberg, May 9, 2018. 0029 % Contributors: 0030 % Change log: 0031 0032 d_data_pilot=d_data; 0033 M=Para.nSubcarriers/2; 0034 0035 theta=ones(2*M,2*Para.Ns); 0036 theta(2:2:end,1:2:end)=1j; 0037 theta(1:2:end,2:2:end)=1j; 0038 0039 if Para.N_T==1 0040 d_data_pilot(Para.ScatteredPilotSubcarriers, Para.ScatteredPilotSymbols)=0; 0041 d_data_pilot(Para.ScatteredPilotSubcarriers, Para.ScatteredPilotSymbols+1)=0; 0042 for m=Para.ScatteredPilotSubcarriers 0043 for l=Para.ScatteredPilotSymbols 0044 m_0=m-1; 0045 l_0=l-1; 0046 0047 pilotPos=[m_0,l_0]; 0048 auxPilotPos=[m_0,l_0+1]; 0049 d_data_pilot(pilotPos(1)+1,pilotPos(2)+1)=1; 0050 d_data_pilot(auxPilotPos(1)+1,auxPilotPos(2)+1)=0; 0051 0052 La=Para.kappa; 0053 F=3*(2*La-1); 0054 d_S=zeros(F,1); 0055 set_S=zeros(F,2); 0056 for index=1:F 0057 m_temp=m_0-1+floor((index-1)/(2*La-1)); 0058 l_temp=l_0+1-(La)+mod(index-1,2*La-1); 0059 if l_temp<Para.ScatteredPilotSymbols(end) 0060 set_S(index,:)=[m_temp, l_temp]; 0061 d_S(index)=d_data_pilot(m_temp+1, l_temp+1); 0062 end 0063 end 0064 t_P=ComputeTransmuxCoefficient( auxPilotPos, m_0, l_0, theta, Para ); % t_P computation 0065 t_S=ComputeTransmuxCoefficient( set_S, m_0, l_0, theta, Para ); % t_S computation 0066 0067 d_data_pilot(auxPilotPos(1)+1,auxPilotPos(2)+1)=real((1-t_S*d_S)/t_P); 0068 d_data_pilot(pilotPos(1)+1,pilotPos(2)+1)=sqrt(Para.Ep/2)*(randi([0 1])*2-1); 0069 end 0070 end 0071 else 0072 error('Function not yet implemented for MIMO') 0073 0074 end 0075