**The WaveComBox toolbox allows to implement a complete communication chain** relying on a specific modulation with minimal effort.

The general architecture of the toolbox is divided in three mains parts: **transmitter**, **channel** and **receiver**.

The **parameters** relative to the **modulation** and communication chain are summarized in a **structure** that should be initialized at the beginning of each script.

More information are given in the following sections together with a basic example. Many other examples are also available.

This example shows how to simulate a basic SISO communication chain relying on the FBMC-OQAM modulation.

This sections describes the different modulations currently implemented in the WaveComBox toolbox.

The structure containing the parameters of all modulations can be initialized to default values using the function InitializeChainParameters.

This section describes the main signal processing blocks that compose the transmitter part of the communication chain. The implementation of the signal processing blocks depends on the modulation.

This section describes the different channel models that are included in the WaveComBox toolbox.

This section describes the main signal processing blocks that compose the receiver part of the communication chain. The implementation of the signal processing blocks depends on the modulation.

You can download WaveComBox in the download section.

The transmit signal $s[n]$ is obtained after FBMC-OQAM modulation of the purely real data symbols $d_{m,l}$, \begin{align*} s[n]&=\sum_{m=0}^{2M-1}\sum_{l=0}^{2N_s -1} d_{m,l} g_{m,l}[n], \end{align*} where $g_{m,l}[n]=\jmath^{m+l}g[n-lM]e^{\jmath\frac{2\pi}{2M}m(n-lM-\frac{L_g-1}{2}) }$. Parameters $2M$, $2N_s$ and $L_g$ refer to the number of subcarriers, of real multicarrier symbols and to the length of the prototype filter $g[n]$. The received signal $r[n]$, after multipath fading and additive noise, is given by \begin{align*} r[n]&=(s\otimes h)[n] + w[n], \end{align*} where $\otimes$ stands for the convolution operator, $h$ for the channel impulse response and $w[n]$ for the additive noise samples. The samples obtained at the receiver, after FBMC-OQAM demodulation at subcarrier $m_0$ and multicarrier symbol $l_0$, are given by \begin{align*} z_{m_0,l_0}&=\sum_n r[n] g^*_{m_0,l_0}[n]. \end{align*} Finally, the estimated symbols are obtained after single-tap equalization and real conversion as \begin{align*} \hat{d}_{m_0,l_0}&=\Re \left(\frac{z_{m_0,l_0}}{H_{m_0}}\right), \end{align*} where $H_{m_0}$ is the channel frequency response evaluated at subcarrier $m_0$. In WaveComBox, this example can be simulated with the simple following code:

% Initialization of general Parameters of the FBMC-OQAM chain Para = InitializeChainParameters( 'FBMC-OQAM' ); % Transmitter d = GenerateData ( Para ); % Generate data symbols s = Modulator( d, Para ); % FBMC-OQAM modulation % Channel c = GenerateRayleighChannelReal('ITU_VehA', Para); % Generate one channel realization r = Channel_Multipath( s, c ); % Multipath channel r = Channel_AWGN( r, Para ); % AWGN channel, SNR fixed in Para % Receiver z = Demodulator( r, Para ); % FBMC-OQAM demodulation x = Equalizer( z, c, Para ); % Single-tap equalizer d_hat = real( x );

The CP-OFDM modulation is the most popular multicarrier modulation scheme nowadays. The main advantage of CP-OFDM is its simplicity. Thanks to the combination of the Fast Fourier transform (FFT) and the introduction at the transmitter of redundant symbols known as the cyclic prefix, the OFDM modulation allows for a very simple compensation of the channel impairments at the receiver. However, the rectangular pulse shaping of the FFT filters induces significant spectral leakage, which results in the need for large guard bands at the edges of the spectrum in order to prevent out-of-band emissions. This bad frequency localization decreases the system flexibility regarding spectrum allocation and makes it less suited for applications such as cognitive radios and the Internet of Things, which may require asynchronous transmission for multiple users.

A **description of the signal processing blocks** implemented for the **CP-OFDM modulation** is available here.

The structure containing the modulation parameters of the CP-OFDM modulation can be initialized to default values as

`[ Para ] = InitializeChainParameters( 'CP-OFDM' );`

Details on the different CP-OFDM modulation parameters are given here.

The FBMC-OQAM modulation has recently received a lot of attention as an attractive alternative to CP-OFDM systems. As opposed to CP-OFDM, FBMC-OQAM uses a pulse shape which is more spread out in time, which results in a much better frequency localization of the prototype pulse. This provides significant advantages. First, no CP is required to simplify the equalization process, leading to a larger spectral efficiency than CP-OFDM systems. Secondly, very small guard bands (of the order of one subcarrier) at the edges of the spectrum are sufficient to meet frequency emission masks, which again increases the system spectral efficiency. Finally, it provides high flexibility for spectrum allocation with clear applications such as cognitive radios and the Internet of Things, which may require asynchronous transmission from multiple users which can be easily separated in the frequency domain.

A **description of the signal processing blocks** implemented for the **FBMC-OQAM modulation** is available here.

The structure containing the modulation parameters of the FBMC-OQAM modulation can be initialized to default values as

`[ Para ] = InitializeChainParameters( 'FBMC-OQAM' );`

Details on the different FBMC-OQAM modulation parameters are given here.

The FBMC-OQAM modulation provides an improved spectrum localization by using a finer filtering process at the subcarrier level. However, this is often not required since resource allocation and adaptive coding and modulation schemes are commonly applied with a group of subcarriers or physical resource block. Many schemes have been proposed recently, aiming at performing an improved filtering process at the resource block level such as the UFMC modulation. This type of systems maintains a high compatibility with current OFDM systems, including simple channel equalization and straightforward application of OFDM multiple-antenna techniques.

A **description of the signal processing blocks** implemented for the **UFMC modulation** is available here.

The structure containing the modulation parameters of the UFMC modulation can be initialized to default values as

`[ Para ] = InitializeChainParameters( 'UFMC' );`

Details on the different UFMC modulation parameters are given here.

Similarly to the UFMC modulation, the F-OFDM modulation aims at performing an improved filtering process at the resource block level rather than at the subcarrier level.

A **description of the signal processing blocks** implemented for the **F-OFDM modulation** is available here.

The structure containing the modulation parameters of the F-OFDM modulation can be initialized to default values as

`[ Para ] = InitializeChainParameters( 'F-OFDM' );`

Details on the different F-OFDM modulation parameters are given here.

To improve the frequency localization of the CP-OFDM modulation, the W-OFDM modulation uses a window to filter the square pulse used by the CP-OFDM modulation around each subcarrier, which leads to better spectral properties.

A **description of the signal processing blocks** implemented for the **W-OFDM modulation** is available here.

The structure containing the modulation parameters of the W-OFDM modulation can be initialized to default values as

`[ Para ] = InitializeChainParameters( 'W-OFDM' );`

Details on the different F-OFDM modulation parameters are given here.

Each box corresponds to a specific signal processing operation, implemented by a function in WaveComBox. Boxes with solid lines are mandatory boxes while boxes surrounded by dashed lines are optional.

For a description of each function, including their input and output arguments, we refer to the documentation of Modulator, GenerateData, PreEqualizer, GeneratePreamble, MergePreambleData and InsertScattteredPilot. Note that depending on the modulation, each function has different options and may take different parameters.

The channel takes as input the transmitted signal and outputs the received signal. The channel can be viewed in a general sense as the transfer function between the discrete baseband samples at the transmitter and the received baseband discrete samples at the receiver. Many impairments may be considered including additive noise and synchronization errors. Typical wireless effects are included such as multipath fading or mobility. The toolbox is able to address optical effects as well such as chromatic dispersion and phase noise.

For a description of each channel effect implemented in WaveComBox, we refer to the channel documentation available here.

Each box corresponds to a specific signal processing operation, implemented by a function in WaveComBox. Boxes with solid lines are mandatory boxes while boxes surrounded by dashed lines are optional.

For a description of each function, including their input and output arguments, we refer to the documentation of Demodulator, ChannelEstimator, Equalizer, Synchronization, MSEComputes, MSESingleTapTheo and SeparatePreambleData. Note that depending on the modulation, each function has different options and may take different parameters. For instance, six different types of equalizers are possible for the FBMC-OQAM modulation among which only four are MIMO compatible.