wiki:Other/Summer/2025/mlCoexist

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.

https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/BS%20and%20SAT.png


Week 1 (5/27 - 5/29):

Slides: Week 1 Presentation

Progress:

https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/5G%20Interference.png https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/Spectrum%20Diagram.png

Week 2 (6/2 - 6/5):

Slides: Week 2 Presentation

Progress:

https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/Data%20Generation%20Schematic.png

Week 3 (6/9 - 6/12):

Slides: 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)

https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/File%20structure.png https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/Dataset%20structure.png

Week 4 (6/16 - 6/19):

Slides: Week 4 Presentation

Progress:

  • Continued generating PSDs and spectrograms using Jupyter Notebook (link to code)

https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/Npy%20Array%20Shape.png

  • 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)

https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/PSD%20Sample.png https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/Spectrogram%20Sample.png

Week 5 (6/23 - 6/26):

Slides: Week 5 Presentation

  • In progress to generate all graphs for fc1, 2, 3 for both a) transition-band and b) out-of-band scenarios

https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/Frequency%20Band.png

  • Code used for generating spectrograms and converting into Numpy arrays to facilitate easier data processing in the future:
    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: 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

https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/Bandwidth%20table.png

  • 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

https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/PSD%20clean.png https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/PSD%20w%3A%20RFI.png

  • Determined brightness temperature thresholds for various gain levels and labeled the dataset as clean = 0 or RFI-contaminated = 1



Week 7 (7/7 - 7/10):

Slides: 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

https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/SVM.png https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/CNN%20pred.png

  • 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

https://www.orbit-lab.org/raw-attachment/wiki/Other/Summer/2025/mlCoexist/Pipeline.png

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):



Last modified 4 days ago Last modified on Jul 17, 2025, 7:52:45 PM

Attachments (16)

Note: See TracWiki for help on using the wiki.