== Machine Learning for Enabling 5G and Satellite Network Coexistence in FR3 Spectrum \\ **WINLAB Summer Internship 2025** **Group Members:** Audrey Wang, Tulika Punia, Srishti Hazra \\ === Project Overview === Radio Frequency Interference (RFI) occurs when overlapping signals, such as those from satellite systems and emerging 5G technologies in the FR3 (7–24 GHz) band, disrupt each other’s communication quality. We aim to develop a machine learning pipeline that can detect and mitigate such interference. To detect RFI, we utilize convolutional neural networks that leverage both graphical data generated from existing datasets and custom 5G signal data produced using MATLAB’s 5G Toolbox. For the mitigation aspect, we will apply ML algorithms to optimize beam-forming with real-time data. [[Image(https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/BS%20and%20SAT.png, 20%)]] \\ === Week 1 (5/27 - 5/29): === **Slides:** [https://docs.google.com/presentation/d/1hvr30TzM7EJ0IWJ53jkBN7Zxs11MewyA62KL5Y6unOM/edit?usp=drive_link Week 1 Presentation] **Progress:** - Conducted literature review on relevant research papers 1. [https://www.winlab.rutgers.edu/~narayan/PAPERS/5GWF_Conf_Paper_Final.pdf Modeling the Impact of 5G Leakage on Weather Prediction] 2. [https://ieeexplore.ieee.org/document/10195226 Will Emerging Millimeter-Wave Cellular Networks Cause Harmful Interference to Weather Satellites?] 3. [https://ieeexplore.ieee.org/document/10632798 How Does the Growth of 5G mmWave Deployment Affect the Accuracy of Numerical Weather Forecasting?] - Understood the high level idea of what **Radio Frequency Interference(RFI)** and **frequency allocations** are - Explored how ML can be implemented to minimize the interference between satellite and 5G in different spectrums [[Image(https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/5G%20Interference.png, 31%)]] [[Image(https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/Spectrum%20Diagram.png, 45%)]] \\ \\ === Week 2 (6/2 - 6/5): === **Slides:** [https://docs.google.com/presentation/d/1PqrNeu_GJZgtgby3EKuNGA3qdGhwVvmpP4UPYoz4LJg/edit?usp=drive_link Week 2 Presentation] **Progress:** - Familiar with the pros and cons of the different approaches to beam-forming, especially the benefits of ML application - Read research papers related to a physical-testbed-generated RFI dataset, and got familiar with the data generation process: 1. [http://ieeexplore.ieee.org/document/10663400 A Physical Testbed and Open Dataset for Passive Sensing and Wireless Communication Spectrum Coexistence] 2. [https://ieeexplore.ieee.org/document/10318952 Microwave Radiometer Calibration Using Deep Learning With Reduced Reference Information and 2-D Spectral Features] 3. [https://ieeexplore.ieee.org/document/9954900 Radio Frequency Interference Detection for SMAP Radiometer Using Convolutional Neural Networks] [[Image(https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/Data%20Generation%20Schematic.png, 80%)]] \\ \\ === Week 3 (6/9 - 6/12): === **Slides:** [https://docs.google.com/presentation/d/159CiF4dxDeX_jZNkPRP5pg5ZLAY3BmdEWMqAPmpjnsc/edit?usp=drive_link Week 3 Presentation] **Progress:** - Grasped the comprehensive testbed pipeline and understood how calibrated higher-level data were obtained from raw I/Q signals - Began to process data with Numpy and h5py, generating **Power Spectral Density(PSD)** graphs and **spectrograms** from L1A data - Utilized the radiometer's ability to interpret all received power as thermal radiation to quantify RFI by detecting abnormal temperature increases - Saved plotted graphs into a 2D Numpy array for future model training use (4 columns: RFI Scenario | PSD | Spectrogram | Temp Difference) [[Image(https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/File%20structure.png, 46%)]] [[Image(https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/Dataset%20structure.png, 26%)]] \\ \\ === Week 4 (6/16 - 6/19): === **Slides:** [https://docs.google.com/presentation/d/1jEWhbv100Qa9WNsY0GvR3G3Omjuydsg9Gobl5K-tQQ4/edit?usp=sharing Week 4 Presentation] **Progress:** - Continued generating PSDs and spectrograms using Jupyter Notebook (link to [https://colab.research.google.com/drive/1OdL760A2SvH2_s9r1HCOj5RPmEhZtVI7?usp=sharing code]) [[Image(https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/Npy%20Array%20Shape.png, 66%)]] - Sample PSD and spectrogram for RFI scenario "tr_fc0_4RB_Gain-20_sn2" (transition band; central frequency 0; 4 resource blocks; gain -20; sample number 2) [[Image(https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/PSD%20Sample.png, 45%)]] [[Image(https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/Spectrogram%20Sample.png, 30%)]] \\ \\ === Week 5 (6/23 - 6/26): === **Slides:** [https://docs.google.com/presentation/d/1ZrB5kBzRKhU45BmC8-zx7iey_qw-wPnbzNfc0PZliJs/edit?usp=sharing Week 5 Presentation] - In progress to generate all graphs for fc1, 2, 3 for both a) transition-band and b) out-of-band scenarios [[Image(https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/Frequency%20Band.png, 60%)]] - Code used for generating spectrograms and converting into Numpy arrays to facilitate easier data processing in the future: {{{#!python def plot_spect(dataset, title,min_value,max_value,normalized=False, save=None): if normalized: global_maximum = np.amax(np.abs(dataset)) else: global_maximum = 1 #normalize received power and convert into dB scale) y_res = 20 * np.log10(np.abs(dataset) / global_maximum) fig = plt.figure(figsize=(12, 8)) im = plt.imshow(y_res, origin='lower', cmap='jet', aspect='auto', vmax=max_value, vmin=min_value) plt.colorbar(label='dB') yaxis = np.ceil(np.linspace(-15, 15, 11)) ylabel = np.linspace(0, len(y_res), 11) xaxis = np.linspace(0, .25, 5) xlabel = np.linspace(0, len(y_res[1]), 5) plt.title(title) plt.yticks(ylabel, yaxis) plt.xticks(xlabel, xaxis) plt.xlabel('Time') plt.ylabel('Frequency') plt.tight_layout() #save the RGB values of the plot as a Numpy array fig.canvas.draw() img_rgba = np.frombuffer(fig.canvas.tostring_argb(), dtype=np.uint8) img_rgba = img_rgba.reshape(fig.canvas.get_width_height()[::-1] + (4,)) img_rgb = img_rgba[:, :, [1, 2, 3]] return img_rgb }}} \\ \\ === Week 6 (6/30 - 7/3): === **Slides:** [https://docs.google.com/presentation/d/1RtxGqrlTlRKB1sTNcQEXK1tM1A_ah58ShNB8DlTKeoo/edit?usp=sharing Week 6 Presentation] - Finished generating 348 sets of graphical data for the following inference scenarios: 1. Center frequencies 1423.5mHz(fc1), 1433.5mHz(fc2), 1443.5mHz(fc3) for transition band 2. Center frequencies 1440.5mHz(fc1), 1442.5mHz(fc2), 1444.5mHz(fc3) for out-of-band [[Image(https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/Bandwidth%20table.png, 34%)]] - Identified clean vs. RFI-contaminated signal shapes in Power Spectral Density (PSD) plots: 1. Uniform (Clean, L): flat-top spectrum, power emitted uniformly across entire bandwidth 2. Spikes (RFI, R): abrupt, sharp spikes in power at random frequencies [[Image(https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/PSD%20clean.png, 26%)]] [[Image(https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/PSD%20w%3A%20RFI.png, 26%)]] - Determined brightness temperature thresholds for various gain levels and labeled the dataset as clean = 0 or RFI-contaminated = 1 - Link to [https://colab.research.google.com/drive/1HNY1UFtT_i09UoGw7iyH8hQBkvqFWRB1?usp=sharing code] \\ \\ === Week 7 (7/7 - 7/10): === **Slides:** [https://docs.google.com/presentation/d/1UjKgVrvjZz4Qy2ThGzP2QxDBJIv8IGLcZBpsashCau4/edit?usp=sharing Week 7 Presentation] **Progress:** - Machine learning models: 1. Trained a CNN for RFI detection using pre-trained model (ResNet18) with the last classification layer modified 2. Developed an SVM baseline to assess the efficiency of the CNN approach (address potential underutilization of the neural network) * Performed cross-validation to ensure the models were not overfitting * Both the CNN and SVM achieved over 95% accuracy, correctly labeling each graph as either 0 = clean or 1 = RFI [[Image(https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/SVM.png, 42%)]] [[Image(https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/CNN%20pred.png, 50%)]] - Continued obtaining data from transition band (100 additional rows: 1413.5mHz(fc0), 1453.5mHz(fc4) - Created a mathematical pipeline to estimate brightness temperature(K) based on total transmitting power(W) - Approximate amount of received power from total transmitted power using Friis Transmission formula - Use power recieved to estimate change in brightness temperature cause by RFI [[Image(https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/Pipeline.png, 40%)]] \\ \\ === Week 8 (7/14 - 7/17): === **Progress:** - Tested the accuracy of using the two formulas to estimate brightness temperature by comparing the calculated value with the physically measured Tb values provided by the testbed dataset \\ \\ === Week 9 (7/21 - 7/24): === \\ \\