This repository contains the Artifact for the paper titled Crescendo: Towards Real-time, Wide-band, High-Fidelity Spectrum Sensing Systems, conditionally accepted by MobiCom 2023.
The codebase provided here includes both MATLAB scripts and functions that were used to generate the figures and results detailed in the paper, particularly Figures 3 and 9.
The repository is organized as follows:
-
MATLAB Scripts: Main scripts that utilize the defined MATLAB functions to analyze data and generate figures. They include:
ub_lo_linearity.m
: This script processes LO linearity data and plots Figure 3(b).ub_lo_stability.m
: This script processes LO stability data and plots Figure 3(a).case_study.m
: This script processes I/Q data received by the SM200C prototype of crescendo along with real-time gain settings.
-
MATLAB Functions: Supporting functions that are called within the main scripts. They include:
get_lo_linearity_metrics.m
: Function to analyze linearity of LO sweeps.get_lo_stability_metrics.m
: Function to analyze stability of LO across consecutive sweeps.- Read/write functions
-
Data:
- For Figure 3: The
.mat
files containing the processed IQ samples from the frequency sweeps are expected to be found within designated folders as specified in the MATLAB scripts. - For Figure 9 (case_study): The folders containing the binary data files are expected to be found where
case_study.m
specifies it.
- For Figure 3: The
The data is available on google drive: Link to google drive
- For Figure 3: folders starting with the prefix
ub
(total size: 23.3 MB) - For Figure 9: all zip files (total size: ~4.5 GB)
- Download each zip file
- Verify hash using
md5sum <zip_file_name>
. Hashes are in thehashes
google doc - Uncompress to get the folder and data
Put all folders in crescendo_mobicom/data/
Before running the code, please ensure you have MATLAB installed on your system (versions R2021b or later are recommended for best compatibility). The Curve Fitting Toolbox is required.
- Clone the repository to your local machine using Git:
git clone https://github.com/rfspectrum/crescendo_mobicom23.git
- Navigate to the repository folder:
cd crescendo_mobicom23
- Run the MATLAB scripts. For example, to run the
ub_lo_linearity.m
script, use the following command in the MATLAB command window:
run ub_lo_linearity.m
- Repeat Step 3 for the
ub_lo_stability.m
andcase_study.m
script.
By following the above steps, you should be able to reproduce Figures 3 and 9.
Please note that you need to provide the actual data in .mat
files as the repository does not contain the original data due to its large size. You may need to adjust the paths to these .mat
files in the MATLAB scripts depending on your local setup.
Re-producing Figure 3 will take 2 human minutes and 1 machine minutes. Reproducing Figure 9 will take 1 human minute and 4 machine minutes.
For any inquiries or issues running the provided code, please open an issue in this repository or contact the corresponding author.
Thank you for your interest in our research and for evaluating our artifact.
(This readme, and other documentation were partly generated using LLMs)