Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

In this repository are functions for obtaining, analyzing and estimating the precision of ground-based GNSS-Reflectometry sea level observations. This includes functions for creating synthetic SNR data and obtaining sea level measurements via spectral analysis or via inverse modelling of SNR data, as per

The codes can be cited as follows: Purnell, D.J., Gomez, N., Chan, N.H., Strandberg, J., Holland, D.H. and Hobiger, T. (2020). Quantifying the uncertainty in ground-based GNSS-Reflectometry sea level measurements. IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing (JSTARS) doi: 10.1109/JSTARS.2020.3010413.

For any questions or suggestions or issues please contact Dave Purnell:

See the code 'example_code.m' to see examples on how to use some of the following functions written by David Purnell: analyzesnr_fun makesnr_fun readsp3file noisefun noisefunresid gnss2azelv scalenoisepower trop_delay_tp rinex2snrfile spectralanalysis_kl tidemod_kl tidemod_kl_plot coef2ampphase invsnr invsnr_plot bspline_spectral bspline_js

The directory 'data' contains a short period of data from site 'sc02' that is used to show how to run functions in 'example_code.m'

IMPORTANT: To run these functions, you will need to download some or all of the following codes / models and copy them to the directory:

  1. Download the multipath simulator model by Nievisnki & Larson, place directory in 'functions' and rename to 'mpsim' Download link:

  2. You also need to download the following 3 codes from the Geodetic toolbox made by Mike Craymer and place them in the 'functions' directory: doy2jd.m jd2gps.m cal2jd.m Download link:

  3. For tropospheric delay corrections, download the following codes and place in the saasthyd.m asknewet.m vmf1_ht.m gpt2_1w.m gpt2_1w.grd

  4. ecef2lla.m by Michael Kleder

  5. 'The Fastest Lomb-Scargle Periodogram estimator in the West' by A Eleuteri:

  6. Download the the 't_tide' model by Rich Pawlowicz: And move the directory inside the 'functions' directory

  7. Download b-spline codes for matlab by Levente Hunyadi, place the directory in the 'functions' directory.

IMPORTANT: The directory 'functions/fresnel' contains outdated codes written by Kristine Larson and others to produce fresnel zones. An updated version of these codes can be found at: I am using the old version because I prefer it to the newer version.

ADDING OTHER SITES: The directory 'functions/station_inputs' contains parameters for several different sites. If you want to analyze data at a site that is not there, you will need to create a station_input.m file for the new station. A description of the parameters is given in the 'sc02_input.m' file

OBTAINING GNSS DATA AND ORBIT FILES: The directory 'functions/getsfiles' contains some codes for obtaining GNSS data and sp3 files via ftp

NOTE: apologies for the mess and bad code writing practices


Obtain and analyse GNSS-R water level observations and create synthetic SNR data






No releases published


No packages published