Main Content

slantRangeCircularOrbit

Calculate slant range or distance between circularly orbiting satellite and ground station

Since R2024a

    Description

    dist = slantRangeCircularOrbit(el,hs,hg) calculates the distance in meters between a circularly orbiting satellite and a ground station, with the specified elevation angle el, satellite altitude hs, and ground station altitude hg.

    For more information, see Slant Range Calculations.

    Note

    • slantRangeCircularOrbit assumes the Earth is spherical and ignores the Earth rotation rate.

    • slantRangeCircularOrbit also assumes that an access or link is possible from the satellite to the ground station at all times.

    • You can apply this syntax to any orbit type irrespective of its shape.

    example

    dist = slantRangeCircularOrbit(el,hs,hg,time) specifies the time instances to calculate the distance between a circularly orbiting satellite and a ground station.

    For more information, see Slant Range Calculations.

    Note

    This syntax also assumes:

    • The ground station is located at the North Pole (positive Z–axis), and the satellite starts from the initial input elevation angle el in the second quadrant of the YZ–plane.

    • Satellite moves in the clockwise direction in its circular orbit.

    example

    Examples

    collapse all

    Calculate the slant range for a satellite moving in circular orbit and then plot the slant range as a function of elevation angle.

    Set satellite altitude as 10000 km and ground station altitude as 120 m.

    hs = 10000e3; % meters
    hg = 120;     % meters

    Vary the elevation angle from 0 to 90 degrees.

    el = 0:90;   % degrees

    Calculate the slant range for the varying elevation angles.

    dist = slantRangeCircularOrbit(el,hs,hg);

    Plot the slant range as a function of elevation angle.

    figure
    plot(el,dist,"-*")
    title("Slant Range vs Elevation Angle")
    xlabel("Elevation Angle (degrees)")
    ylabel("Slant Range (meters)")
    grid on

    Figure contains an axes object. The axes object with title Slant Range vs Elevation Angle, xlabel Elevation Angle (degrees), ylabel Slant Range (meters) contains an object of type line.

    Visualize the variation of slant range for one orbital period of satellite.

    Set the satellite altitude as 1500 km and initial elevation angle as 45 degrees. Assume ground station height is 0 m.

    hs = 1500e3; % meters
    el = 45;     % degrees
    hg = 0;      % meters

    For the specified satellite altitude of 1500 km, the orbital time period is 6949.518 seconds. To cover one orbital time period, set the maximum time instance to 6950 seconds.

    time = 0:6950; % seconds

    Calculate the slant range for the specified time instances.

    dist = slantRangeCircularOrbit(el,hs,hg,time);

    Plot the slant range as a function of time.

    figure
    plot(time,dist)
    title("Slant Range vs Time")
    xlabel("Time (seconds)")
    ylabel("Slant Range (meters)")
    grid on

    Figure contains an axes object. The axes object with title Slant Range vs Time, xlabel Time (seconds), ylabel Slant Range (meters) contains an object of type line.

    Input Arguments

    collapse all

    Satellite elevation angle in degrees, specified as a real scalar or vector.

    The function considers each elevation angle as an independent satellite. The nominal range of elevation angles is from 0 to 90 degrees. However, this function accepts any input elevation angle, enabling you to position the satellite anywhere in the orbit.

    For example, this figure shows a scenario in which el input is [45 135 225]. In this case, the function assumes there are three independent satellites.

    • Satellite 1 at elevation angle α1 = 45°

    • Satellite 2 at elevation angle α2 = 135°

    • Satellite 3 at elevation angle α3 = 225°

    Figure shows 3 elevation angles (45, 135, and 225 degrees) where satellites are positioned in orbit. Each elevation angle is considered as a seperate satellite.

    Data Types: double

    Satellite altitude in meters, specified as a positive scalar.

    Data Types: double

    Ground station altitude in meters, specified as a nonnegative scalar.

    hg must be less than hs.

    Data Types: double

    Time instances to calculate the distance between a circularly orbiting satellite and a ground station, specified as a real scalar or vector. Units are in seconds.

    A negative value of time represents the counter–clockwise rotation of the satellite.

    When you specify time, the function uses the el, hs, and hg inputs as the initial values at 0 seconds.

    Data Types: double

    Output Arguments

    collapse all

    Distance between a circularly orbiting satellite and a ground station in meters, returned as a scalar, vector, or matrix.

    When you specify el as a vector of length NumEL and time as a vector of length NumTIME, then dist is a matrix of size NumEL-by-NumTIME. Each row of dist represents the slant range for the corresponding elevation angle.

    The slant range between the satellite and ground station is lowest at the zenith, which you can observe in the Examples.

    Data Types: double

    More About

    collapse all

    Extended Capabilities

    expand all

    C/C++ Code Generation
    Generate C and C++ code using MATLAB® Coder™.

    Version History

    Introduced in R2024a