Synthesis filterbank implementation using IFFT and polyphase network [1,2]. function [ s ] = SFB(d_oqam, p, Para ) Input arguments: d_oqam: OQAM precoded symbols. p: prototype pulse of length Para.nSubcarriers*Para.kappa Para: structure containing the modulation parameters. Outputs arguments: s: modulated signal. References: [1] P. Siohan, C. Siclet, and N. Lacaille, "Analysis and design of OFDM/OQAM systems based on filterbank theory," IEEE Transactions on Signal Processing, vol. 50, pp. 1170–1183, May 2002. [2] Viholainen, A. et al., "Prototype filter and structure optimization," tech. rep., ICT-211887 PHYDYAS, January 2009.
0001 function [ s ] = SFB(d_oqam, p, Para ) 0002 % Synthesis filterbank implementation using IFFT and polyphase network [1,2]. 0003 % 0004 % function [ s ] = SFB(d_oqam, p, Para ) 0005 % 0006 % Input arguments: 0007 % 0008 % d_oqam: OQAM precoded symbols. 0009 % 0010 % p: prototype pulse of length Para.nSubcarriers*Para.kappa 0011 % 0012 % Para: structure containing the modulation parameters. 0013 % 0014 % Outputs arguments: 0015 % 0016 % s: modulated signal. 0017 % 0018 % References: 0019 % [1] P. Siohan, C. Siclet, and N. Lacaille, "Analysis and design of 0020 % OFDM/OQAM systems based on filterbank theory," IEEE Transactions 0021 % on Signal Processing, vol. 50, pp. 1170–1183, May 2002. 0022 % [2] Viholainen, A. et al., "Prototype filter and structure optimization," 0023 % tech. rep., ICT-211887 PHYDYAS, January 2009. 0024 0025 0026 % This file is part of WaveComBox: www.wavecombox.com and is distributed under the terms of the MIT license. See accompanying LICENSE file. 0027 % Original author: François Rottenberg, May 4, 2018. 0028 % Contributors: 0029 % Change log: 0030 0031 N=length(d_oqam(1,:)); 0032 M=Para.nSubcarriers/2; 0033 0034 0035 A=kron(reshape(p,2*M,Para.kappa),[1,0]); 0036 Lg=length(p); 0037 beta=exp(-1j*2*pi*(0:2*M-1)'/(2*M)*(Lg-1)/2)*ones(1,N); 0038 0039 d_beta=d_oqam.*beta; 0040 0041 X_poly=conv2along1(ifft(d_beta),A)*(2*M); 0042 X_poly=[X_poly(1:M,:),zeros(M,1)]+[zeros(M,1),X_poly((M+1):2*M,:)]; 0043 s=X_poly(:).'; 0044 0045 end 0046