DOI: 10.5281/zenodo.17335515
title: SATCOM Interference Classification Dataset

description: SATCOM Interference Dataset and Generation Script

This repository contains the dataset and MATLAB generation script for the paper: "Lightweight Dual-Branch CRNN for Interference Classification in SATCOM".

The goal of this work is to provide a realistic, high-fidelity synthetic dataset for developing and benchmarking machine learning models for interference classification in satellite communications.

Dataset Overview

The provided dataset (`satcom_interference_dataset_92400inst.mat`) contains 92,400 signal instances, each representing a 20 µs snapshot captured at a sampling rate of 50 Msps.

The dataset is built around a key feature for realism: imperfect signal cancellation. Instead of assuming the desired DVB-S2X signal is perfectly removed, a low-power, distorted residual is always present. All signals are also passed through a receiver model that introduces Carrier Frequency Offset (CFO) and Phase Noise.

Interference Classes

The dataset includes 7 classes (with labels 0-6):




Label
Class Name 
Description


0
NoInterference
Contains only the DVB-S2X residual, thermal noise, and receiver impairments.


1
CW
A single-tone Continuous Wave jammer. 


2
FMCW
A linear frequency-modulated (chirp) jammer. 


3
Pulsed
A simple pulsed jammer with varying duty cycle and pulse width.


4
BroadbandNoiseJammer
A non-stationary, band-limited noise jammer with amplitude modulation.


5
5G_NR_OFDM
A realistic 5G NR OFDM signal from a terrestrial base station. 


6
AdjacentDVB_S2X
Interference from a neighboring satellite's DVB-S2X signal.




 

How to Use the Pre-Generated Dataset

The primary dataset file used in the paper is:`satcom_interference_dataset_92400inst.mat`

You can load it into MATLAB using the following command:

% Load the dataset fileload('satcom_interference_dataset_92400inst.mat');

% The file contains the following variables:%   - all_iq_data:      [92400 x 1000] complex single matrix of IQ samples.%   - all_labels:       [92400 x 1] uint8 vector of class labels (0-6).%   - all_metadata:     [92400 x 1] struct array with detailed parameters for each instance.%   - fs, N_points, etc.: Scalar parameters describing the dataset generation.

 

Generating a Custom Dataset

If you wish to generate a new dataset with different parameters (e.g., more instances, different CNR/INR ranges), you can use the provided generation script.

Requirements





MATLAB R2022a or newer




Required Toolboxes:





Communications Toolbox




Signal Processing Toolbox




Phased Array System Toolbox




5G Toolbox




Parallel Computing Toolbox





Setup





DVB-S2X LDPC Matrices: The script requires LDPC parity matrices for DVB-S2X waveform generation.





Download the support package from the MathWorks DVB-S2X Library page.




After installation, locate the s2xLDPCParityMatrices folder.




Copy this folder into the same directory as the generate_satcom_dataset.m script. The script is configured to look for it in a relative path (./s2xLDPCParityMatrices).





Configuration and Execution





Open generate_satcom_dataset.m in MATLAB.




Edit the "User Configuration" section at the top of the script to set your desired parameters (e.g., numInstancesPerClass, CNR_dB_range, INR_dB_range).




Run the script from the MATLAB command window:



run('generate_satcom_dataset.m');




The script will create a new folder named satcom_interference_dataset and save the resulting .mat file inside it. Generation can take a significant amount of time depending on the number of instances and your hardware.

Citation

If you use this dataset or generation script in your research, please cite our paper:

@inproceedings{agamy2025Lightweight,  author    = {Agamy, Abdallah and Naguib, Mohamed and Abdelwanees, Essam and Rohiem, Alaa Eldin},  title     = {Lightweight Dual-Branch CRNN for Interference Classification in SATCOM},  booktitle = {2025 37TH THE INTERNATIONAL CONFERENCE ON MICROELECTRONICS (ICM)},  year      = {2025},  pages     = {1-6},  doi       = {10.1109/ICM66518.2025.11322483}}