主要内容

gnssIonosphere

Ionospheric delay model for GNSS signals

Since R2026a

    Description

    The gnssIonosphere object stores the ionospheric delay model to use while calculating the receiver position using the receiverposition function.

    Creation

    Description

    iono = gnssIonosphere create an ionospheric delay model object with no delay model.

    iono = gnssIonosphere(delaymodel,alpha,beta) specifies the delay model and the coefficients for the delay model.

    example

    Input Arguments

    expand all

    Delay model, specified as a one of these options:

    • "none" — Use no delay model.

    • "klobuchar" — Use the Klobuchar delay model and enable the Alpha and Beta properties.

    This argument sets the DelayModel property.

    Data Types: char | string

    Alpha coefficients for the Klobuchar delay model, specified as a four-element vector. The default values are the alpha values from January 1, 2025.

    To specify the alpha argument, you must specify the delaymodel argument as "klobuchar".

    To get the alpha coefficients from a RINEX navigation file header, you must extract the Parameters field of the first element of the IonosphericCorrections field. Note that only RINEX navigation messages containing GPS, Galileo, NavIC/IRNSS, and QZSS satellite data include the alpha and beta ionospheric correction parameters.

    This argument sets the Alpha property.

    Beta coefficients for the Klobuchar delay model, specified as a four-element vector. The default values are the beta values from January 1, 2025.

    To specify the beta argument, you must specify the delaymodel argument as "klobuchar".

    To get the beta coefficients from a RINEX navigation file header, you must extract the Parameters field of the first element of the IonosphericCorrections field. Note that only RINEX navigation messages containing GPS, Galileo, NavIC/IRNSS, and QZSS satellite data include the alpha and beta ionospheric correction parameters.

    This argument sets the Beta property.

    Properties

    expand all

    Delay model, specified as a one of these options:

    • "none" — Use no delay model.

    • "klobuchar" — Use the Klobuchar delay model. For more information, see Klobuchar Delay Model.

    Data Types: char | string

    Alpha coefficients for the Klobuchar delay model, specified as a four-element vector.

    To use this property, the DelayModel property value must be "klobuchar".

    Beta coefficients for the Klobuchar delay model, specified as a four-element vector.

    To use this property, the DelayModel property value must be "klobuchar".

    Examples

    collapse all

    Read the data and header from a RINEX navigation message.

    navFileName = "GODE00USA_R_20250880000_01D_GN.rnx";
    [rnxnavdata,rnxnavhdr] = rinexread(navFileName)
    rnxnavdata = struct with fields:
        GPS: [189×32 timetable]
    
    
    rnxnavhdr = struct with fields:
                   FileVersion: 3.0400
           FileSatelliteSystem: 'G'
                      FileType: 'N'
                      Comments: [9×1 string]
        IonosphericCorrections: [2×1 struct]
                           PGM: "sbf2rin-15.10.3"
                         RunBy: ""
                  CreationDate: 30-Mar-2025 00:08:27
    
    

    Get the ionospheric correction parameters from the header. Note that only RINEX navigation messages containing GPS, Galileo, NavIC/IRNSS, and QZSS satellite data include the alpha and beta ionospheric correction parameters.

    ionosphereParams = rnxnavhdr.IonosphericCorrections
    ionosphereParams=2×1 struct array with fields:
        CorrectionType
        Parameters
        TimeMark
        SVID
    
    

    Create the ionosphere delay model and set the alpha and beta parameters.

    ionoDelayModel = gnssIonosphere("klobuchar");
    ionoDelayModel.Alpha = ionosphereParams(1).Parameters;
    ionoDelayModel.Beta = ionosphereParams(2).Parameters
    ionoDelayModel = 
      gnssIonosphere with properties:
    
        DelayModel: "klobuchar"                              
             Alpha: [2.9802e-08 7.4506e-09 -1.7881e-07 0]    
              Beta: [1.3312e+05 0 -2.6214e+05 2.6214e+05]    
    
    

    Read the data from a RINEX navigation and observation messages. These RINEX files contain GNSS data for March 29, 2025.

    navFileName = "GODE00USA_R_20250880000_01D_GN.rnx";
    obsFileName = "GODE00USA_R_20250880800_01H_30S_MO.rnx";
    [rnxnavdata,rnxnavhdr] = rinexread(navFileName);
    [rnxobsdata,rnxobshdr] = rinexread(obsFileName);

    Create ionosphere and troposphere delay models. Use the Klobuchar model for the ionosphere delay model with the GPS alpha and beta coefficients from the header file.

    ionoParams = rnxnavhdr.IonosphericCorrections;
    alpha = ionoParams(1).Parameters;
    beta = ionoParams(2).Parameters;
    ionoDelayModel = gnssIonosphere("klobuchar",alpha,beta);
    tropoDelayModel = gnssTroposphere("saastamoinen");

    Create the GNSS options for estimating the receiver position.

    opts = gnssoptions(Ionosphere=ionoDelayModel,Troposphere=tropoDelayModel);

    Get the GNSS measurements for the GPS satellites using the RINEX navigation and observation messages. Show the data for the first three time steps.

    gpsData = gnssmeasurements(rnxobsdata.GPS,rnxnavdata.GPS);
    gpsData(1:3,:)
    ans=3×8 timetable
                Time            SatelliteID    Pseudorange                SatellitePosition                SatelliteClockBias    PseudorangeRate          SatelliteVelocity          SatelliteClockDrift    EphemerisAccuracy
        ____________________    ___________    ___________    _________________________________________    __________________    _______________    _____________________________    ___________________    _________________
    
        29-Mar-2025 08:00:00         1         2.4375e+07      -2.126e+07    -1.4117e+07     7.4018e+06        0.00019738              NaN          -471.47    -855.01      -2983        1.8076e-11                 2        
        29-Mar-2025 08:00:00         2          2.566e+07     -2.0524e+07    -1.6951e+07    -2.4589e+06       -0.00020789              NaN           429.94     23.954    -3140.9         9.436e-12                 2        
        29-Mar-2025 08:00:00         3         2.2235e+07     -1.2415e+07    -9.5047e+06      2.132e+07         0.0006808              NaN           578.88    -2675.8    -837.42        3.5243e-12                 2        
    
    

    Calculate the receiver positions by using the GPS measurements and the options specified by the gnssoptions object. Show the receiver positions for the first three time steps.

    [recPos,recVel,hdop,vdop,info] = receiverposition(gpsData,opts);
    recPos(1:3,:)
    ans = 3×3
    
       39.0217  -76.8268   13.7420
       39.0217  -76.8269   13.0003
       39.0217  -76.8268   12.2894
    
    

    More About

    expand all

    References

    [1] International GNSS Service (for Daily 30-Second GPS Broadcast Ephemeris Data, NASA Crustal Dynamics Data Information System (CDDIS), Greenbelt, MD, USA, March 29, 2024; accessed March 29, 2024). https://dx.doi.org/10.5067/GNSS/gnss_daily_n_001.

    [2] International GNSS Service (for Hourly 30-Second Observation Data, NASA Crustal Dynamics Data Information System (CDDIS), Greenbelt, MD, USA, March 29, 2024; accessed March 29, 2024). https://dx.doi.org/10.5067/GNSS/gnss_hourly_o_001.

    [3] Klobuchar, J. A. "Ionospheric Time-Delay Algorithm for Single-Frequency GPS Users." IEEE Transactions on Aerospace and Electronic Systems 23, no. 3 (May 1987): 325–331. https://doi.org/10.1109/TAES.1987.310829.

    Version History

    Introduced in R2026a