# Compressive Sensing-Based IoT Applications: A Review
## 4 CS-Based IoT Applications
### Application Layer
#### 4.3.1 Multi-User Detection and Identification  
Regarding users/devices activity, CS-based event detection approaches exploit the fact that the rate of the active sensing devices over the overall number of the sensing nodes is usually small, which can be seen as a sparse network architecture. Therefore, CS techniques have been exploited not only to detect the signal of interest but also to detect and identify the number of the active devices/users that contribute on the data aggregated at the cloud level. [PERSON] et al. [114] introduced a CS multi-user detection (MUD) detectors for communication systems with code division multiple access (CDMA) by adopting BP algorithm. Furthermore, CS-based MUD using greedy CS algorithms has been proposed in [115]. The authors studied the efficiency and reliability of applying CS to detect both the users activity and to identify data in a CDMA transmission. The obtained results in [115] indicate that the orthogonal least squares (OLS) algorithm is reliable for sparse MUD even in overloaded CDMA systems. However, it is shown in [115] that the symbol errors of the OLS are mainly caused by incorrect activity detection. These results imply that improving user activity detection would enhance the overall system performance. Thus, [PERSON] et al. [116] introduced block-wise orthogonal least squares (BOLS) detection as sparse MUD for sporadic communication using CDMA.  
In [117,118] a CS-based two-stages framework for joint data identification and detection is proposed for IoT applications using multi-carrier CDMA (MC-CDMA) with data transmitting scheme based on sparse index multiple access (SIMA) [119]. First, CS is exploited to estimate the channel state information (CSI) to determine the number of the devices/users that are actually  
\begin{table}
\begin{tabular}{c l l l l} \hline \hline
**References** & **Platform** & **Data Size** & **Reconstruction Time** & **Max Frequency (MHz)** \\ \hline
[100] & FPGA (Virtex6) & 512 & 360 μs & 100 \\
[99] & FPGA (Virtex5) & 128 \(\times\) 128 & 13.7 μs & 165 \\
[105] & FPGA (Virtex7) & 128 & 391.8 μs & 165 \\
[101] & FPGA (Kintex-7) & 1024 & 39.9 μs & 53.7 \\
[104] & FPGA (Virtex5) & 256 \(\times\) 256 & 9.32 μs & N/A \\
[102] & FPGA (Virtex6) & 1024 & 340 μs & 119 \\
[109] & ASIC & 256 & 10.17 μs & 196 \\
[113] & GPU (NVIDIA GTX480) & 81922 & 15 ms & N/A \\ \hline \hline \end{tabular}
\end{table}
Table 3: Comparison between FPGA implementation for OMP presented in the literature.  
transmitting data using OMP. Next, using the estimated CSI, the transmitted data are detected using expectation-maximization (EM) algorithm. In addition, a proposed solution to detect the active users in large scale IoT by combining linear detection and CS recovery algorithm is presented in [120]. This approach aims to improve the receiver performance relying on linear detection and reducing the computational complexity by exploring efficient CS recovery algorithms.  
Furthermore, [PERSON] et al. [121] addressed the problem of MUD in massive IoT networks. The authors adopted structure matching pursuit (SMP) algorithm to jointly detect the common active users at all times, and then to detect the dynamic active users at each time slot individually. However, if the number of devices scales up remarkably, this method will suffer from a high system complexity and a slow reconstruction time. Therefore, [PERSON] et al. [122] proposed a scalable CS-based MUD scheme to tackle this issue based on single measurement vector CS (SMV-CS) [123; 124] which uses group OMP (GOMP) [125] to divide the data into different sub-blocks and reconstruct each sub-block individually.