Main Content

# dopplerShiftCircularOrbit

Calculate Doppler shift at ground station due to circularly orbiting satellite

Since R2024a

## Syntax

``shift = dopplerShiftCircularOrbit(el,hs,hg,freq)``
``shift = dopplerShiftCircularOrbit(el,hs,hg,freq,time)``

## Description

example

````shift = dopplerShiftCircularOrbit(el,hs,hg,freq)` calculates the Doppler shift in hertz at a ground station due to a circularly orbiting satellite, with the specified elevation angle `el`, satellite altitude `hs`, ground station altitude `hg`, and satellite carrier frequency `freq`.For more information, see Doppler Shift Calculations. Note`dopplerShiftCircularOrbit` assumes: The Earth is spherical, the ground station is static, and that the Earth does not rotate.An access or link is possible from the satellite to the ground station at all times.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

````shift = dopplerShiftCircularOrbit(el,hs,hg,freq,time)` specifies the time instances to calculate the Doppler shift at a ground station due to a circularly orbiting satellite.For more information, see Doppler Shift Calculations.```

## Examples

collapse all

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

Set satellite altitude as 10000 km, ground station altitude as 120 m, and satellite carrier frequency as 20 GHz.

```hs = 10000e3; % meters hg = 120; % meters freq = 20e9; % Hz```

Vary the elevation angle from 0 to 90 degrees.

`el = 0:90; % degrees`

Calculate the Doppler shift for the varying elevation angles.

`shift = dopplerShiftCircularOrbit(el,hs,hg,freq);`

Plot the Doppler shift as a function of elevation angle.

```figure plot(el,shift,"-*") title("Doppler Shift vs Elevation Angle") xlabel("Elevation Angle (degrees)") ylabel("Doppler Shift (Hz)") grid on```

Visualize the variation of Doppler shift for one orbital period of satellite.

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

```hs = 1500e3; % meters el = 45; % degrees freq = 5e9; % Hz 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 Doppler shift for the specified time instances.

`shift = dopplerShiftCircularOrbit(el,hs,hg,freq,time);`

Plot the Doppler shift as a function of time.

```figure plot(time,shift) title("Doppler Shift vs Time") xlabel("Time (seconds)") ylabel("Doppler Shift (Hz)") grid on```

## 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°

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`

Satellite carrier frequency in hertz, specified as a nonnegative scalar.

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

Doppler shift in hertz at a ground station due to a circularly orbiting satellite, 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 `shift` is a matrix of size NumEL-by-NumTIME. Each row of `shift` represents the Doppler shift for the corresponding elevation angle.

The Doppler shift continuously changes as the satellite passes over the ground station. As the satellite rises from the horizon and moves toward the zenith, the Doppler shift gradually decreases, becoming 0 at zenith. As the satellite recedes from the zenith, the Doppler increases again, negatively, till the Doppler shift reaches its maximum extent. For an illustration of this behaviour, see the Visualize Doppler Shift Variations for One Satellite Orbital Period example.

Data Types: `double`

## More About

collapse all

### Doppler Shift Calculations

This figure shows a circularly orbiting satellite in clockwise direction, with an elevation angle α with respect to a ground station on Earth. The ground station is located at the North Pole (positive Z–axis). The angle of rotation of the satellite, measured at the centre of the Earth, is θ.

Considering the satellite in the figure is moving in the YZ–plane, the position vector of the satellite `[X; Y; Z]` is given by:

`${X}_{sat}\left(t\right)=\left[0;\left(R+H\right)\mathrm{sin}\left({\omega }_{sat}t\right);\left(R+H\right)\mathrm{cos}\left({\omega }_{sat}t\right)\right]$`

where:

• R = RE + hg, where:

• RE = `6371e3` meters

• hg is the ground station altitude

• H = hs - hg, where hs is the satellite altitude

• `${\omega }_{sat}=\sqrt{\frac{GM}{{\left(R+H\right)}^{3}}}$`

where:

• G is the gravitational constant of `6.6743e-11` (Newtonian constant of gravitation, in m3kg-1s-2)

• M is the mass of the Earth: `5.9722e24` kg

Using the position vector of the satellite, the velocity vector is given by:

`${V}_{sat}\left(t\right)=\left[0;{\omega }_{sat}\left(R+H\right)\mathrm{cos}\left({\omega }_{sat}t\right);-{\omega }_{sat}\left(R+H\right)\mathrm{sin}\left({\omega }_{sat}t\right)\right]$`

Because the function assumes the ground station is stationary, it has these position and velocity vectors:

• Position of ground station = Xg(t) = [0; 0; R]

• Velocity of ground station = Vg(t) = [0; 0; 0]

To derive the formula for Doppler shift at the ground station due to circularly orbiting satellite, follow the steps in the Doppler Shift section on the `dopplershift` page by making these substitutions:

• Position of source — Xsat(t)

• Velocity of source — Vsat(t)

• Position of target — Xg(t)

• Velocity of target — Vg(t)

## Version History

Introduced in R2024a