This repository contains the code I used to simulate the carrier synchronization algorithms of my Bachelor's Degree Final Project (TFG)
MATLAB version: R2020b
Simulink version: R2020b Update 5
The directory structure is:
├── analysis # MATLAB scripts I used for analyzing different needed aspects of the problem.
│ ├── channel # Doppler shift in LEO satellites analysis
│ ├── error_rate # QPSK error rate analysis and simulations
│ └── estimators # QPSK carrier recovery analysis
├── utils # Auxiliary functions and scripts
├── simulations # MATLAB and simulink scripts I used for simulating the algorithms
│ ├── Algorithm_simulations # Simulink models for the proposed and improved proposed algorithms
│ ├── MATLAB_simulations # MATLAB models for different estimators
│ └── old_simulations # Old stuff. Not interesting at all.
└──
The .mat files with the simulation results are not included because they are too big (~10 GB).
Instructions to simulate the proposed and improved proposed algorithms (Simulink) of the simulations/Algorithm_simulations directory.
Simulink models:
├── proposed_solution.slx # Proposed algorithm
└── improved_proposed_solution.slx # Improved proposed algorithm
For the simulation at a single Eb/N0:
- Open the generate_doppler.m file, edit the needed parameters (execution time window, sampling freq, etc.) and execute it.
- Open the desired Simulink model, modify the desired parameters (execution time window, filter parameters etc.) and run it.
- The BER, phase and other results are shown in the model. The BER is also exported to the workspace
For the simulation at several Eb/N0:
- Open the generate_doppler.m file, edit the needed parameters (execution time, sampling freq, etc.) and execute it
- Open the desired Simulink model and modify the desired parameters (execution time windows, filter parameters etc.).
- Open the simulation_workbech.m script, edit the "simulink_file" variable with the desired model and run it.
- Wait (it can take several hours, but depends on the execution time windows). The results will be saved into a results.mat file (expect a big file)
- To analyze the results, load the file into memory and execute the results/analyze_results.m script
Extra step: If a second results file is loaded into memory and the results' variable name is changed into "results2", the analyze_results_both.m file can be used to compare them.
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.