Моделирование спутниковых созвездий с использованием данных Ephemeris

Этот пример демонстрирует, как добавить штампованные по времени эфемеридные данные для созвездия из 24 спутников (подобному созвездию ESA Galileo GNSS) к спутниковому сценарию для анализа доступа. В примере используются данные, сгенерированные Aerospace Blockset Orbit Propagator блок. Для получения дополнительной информации смотрите пример Aerospace Blockset Моделирование Созвездия с блоком Распространения орбиты.

The satelliteScenario объект поддерживает загрузку ранее сгенерированных данных Satellite ephemeris с отметкой времени в сценарий из timeseries или timetable объект. Эфемерида является таблицей, содержащей информацию о положении (и состояние опциональной скорости) спутника в течение заданного периода времени. Данные Эфемериса, используемые для добавления спутников к объекту сценария, интерполируются через makima метод интерполяции для согласования с временными шагами сценария. Это позволяет вам включать данные, сгенерированные моделью Simulink, в новый или существующий satelliteScenario.

Задайте параметры миссии и начальные условия созвездия

Укажите дату и длительность начала миссии. Этот пример использует структуры MATLAB для организации данных миссии. Эти структуры делают доступ к данным позже в примере более интуитивно понятным. Они также помогают объявить глобальное базовое рабочее пространство.

mission.StartDate = datetime(2020, 11, 30, 22, 23, 24);
mission.Duration  = hours(24);

Созвездие в этом примере является созвездием Walker-Delta, смоделированным аналогично созвездию ESA Galileo GNSS (Глобальная навигационная спутниковая система). Созвездие состоит из 24 спутников на средней околоземной орбите (MEO). Кеплеровы орбитальные элементы спутников в эпоху начала миссии:

mission.ConstellationDefinition = table( ...
    23222e3 * ones(24,1), ... % Semi-major axis (m)
    0.0005  * ones(24,1), ... % Eccentricity
    56      * ones(24,1), ... % Inclination (deg)
    350     * ones(24,1), ... % Right ascension of the ascending node (deg)
    sort(repmat([0 120 240], 1,8))', ... % Argument of periapsis (deg)
    [0:45:315, 15:45:330, 30:45:345]', ... % True anomoly (deg)
    'VariableNames', ["a (m)", "e", "i (deg)", "Ω (deg)", "ω (deg)", "ν (deg)"]);
mission.ConstellationDefinition
ans=24×6 table
      a (m)         e       i (deg)    Ω (deg)    ω (deg)    ν (deg)
    __________    ______    _______    _______    _______    _______

    2.3222e+07    0.0005      56         350          0          0  
    2.3222e+07    0.0005      56         350          0         45  
    2.3222e+07    0.0005      56         350          0         90  
    2.3222e+07    0.0005      56         350          0        135  
    2.3222e+07    0.0005      56         350          0        180  
    2.3222e+07    0.0005      56         350          0        225  
    2.3222e+07    0.0005      56         350          0        270  
    2.3222e+07    0.0005      56         350          0        315  
    2.3222e+07    0.0005      56         350        120         15  
    2.3222e+07    0.0005      56         350        120         60  
    2.3222e+07    0.0005      56         350        120        105  
    2.3222e+07    0.0005      56         350        120        150  
    2.3222e+07    0.0005      56         350        120        195  
    2.3222e+07    0.0005      56         350        120        240  
    2.3222e+07    0.0005      56         350        120        285  
    2.3222e+07    0.0005      56         350        120        330  
      ⋮

Загрузка данных Ephemeris Timeseries

Объекты timeseries содержат данные о положении и скорости для всех 24 спутников в совокупности. Данные ссылаются в Международной наземной системе координат (ITRF), которая является центрированной Землей системой координат фиксированной Земли (ECEF). Данные были сгенерированы с помощью Aerospace Blockset Orbit Propagator блок. Для получения дополнительной информации смотрите пример Aerospace Blockset Моделирование Созвездия с блоком Распространения орбиты.

mission.Ephemeris = load("SatelliteScenarioEphemerisData.mat", "TimeseriesPosITRF", "TimeseriesVelITRF");
mission.Ephemeris.TimeseriesPosITRF
  timeseries

  Common Properties:
            Name: ''
            Time: [79x1 double]
        TimeInfo: [1x1 tsdata.timemetadata]
            Data: [24x3x79 double]
        DataInfo: [1x1 tsdata.datametadata]

  More properties, Methods
mission.Ephemeris.TimeseriesVelITRF
  timeseries

  Common Properties:
            Name: ''
            Time: [79x1 double]
        TimeInfo: [1x1 tsdata.timemetadata]
            Data: [24x3x79 double]
        DataInfo: [1x1 tsdata.datametadata]

  More properties, Methods

Загрузите эфемериды спутника в satelliteScenario Object

Создайте объект спутникового сценария для анализа.

scenario = satelliteScenario(mission.StartDate, mission.StartDate + hours(24), 60);

Используйте satellite метод добавления всех 24 спутников к спутниковому сценарию с объектов ECEF position и speocity timeseries. Этот пример использует информацию о положении и скорости; однако спутники также могут быть добавлены только из данных о положении и затем оцениваются состояния скорости. Доступные системы координат для пары "имя-значение" CoordinateFrame являются "ECEF", "Inertial", и "Geographic". Если объект timeseries содержит значение для ts .TimeInfo.StartDateметод использует это значение в качестве эпохи для объекта timeseries. Если нет StartDate определено, метод использует дату начала сценария по умолчанию.

sat = satellite(scenario, mission.Ephemeris.TimeseriesPosITRF, mission.Ephemeris.TimeseriesVelITRF, ...
    "CoordinateFrame", "ecef", "Name", "GALILEO " + (1:24))
sat = 
  1×24 Satellite array with properties:

    Name
    ID
    ConicalSensors
    Gimbals
    Transmitters
    Receivers
    Accesses
    GroundTrack
    Orbit
    OrbitPropagator
    MarkerColor
    MarkerSize
    ShowLabel
    LabelFontSize
    LabelFontColor

disp(scenario)
  satelliteScenario with properties:

         StartTime: 30-Nov-2020 22:23:24
          StopTime: 01-Dec-2020 22:23:24
        SampleTime: 60
           Viewers: [0×0 matlabshared.satellitescenario.Viewer]
        Satellites: [1×24 matlabshared.satellitescenario.Satellite]
    GroundStations: []
          AutoShow: 1

Кроме того, спутники могут также быть добавлены в качестве эфемеридов к сценарию спутника в качестве MATLAB timetable, table, или tscollection. Для примера, a timetable содержит первые 3 спутника положения timeseries объект в предыдущем разделе, отформатированный для использования со satelliteScenario объекты показаны ниже.

  • Спутники представлены переменными (заголовками столбцов).

  • Каждая строка содержит вектор положения, сопоставленный с Time строки свойство.

timetable(...
datetime(getabstime(mission.Ephemeris.TimeseriesPosITRF)), ...
squeeze(mission.Ephemeris.TimeseriesPosITRF.Data(1,:,:))', ...
squeeze(mission.Ephemeris.TimeseriesPosITRF.Data(2,:,:))', ...
squeeze(mission.Ephemeris.TimeseriesPosITRF.Data(3,:,:))',...
'VariableNames', ["Satellite_1", "Satellite_2", "Satellite_3"])
ans=79×3 timetable
            Time                          Satellite_1                                 Satellite_2                                  Satellite_3               
    ____________________    ________________________________________    ________________________________________    _________________________________________

    30-Nov-2020 22:23:24    1.4317e+07    -1.7969e+07    -3.2957e+06    1.8576e+07    -8.4335e+06     1.1077e+07     1.1955e+07     6.0469e+06     1.8967e+07
    30-Nov-2020 22:23:34    1.4326e+07    -1.7968e+07    -3.2607e+06    1.8567e+07    -8.4162e+06     1.1106e+07     1.1934e+07      6.071e+06     1.8974e+07
    30-Nov-2020 22:24:26    1.4367e+07    -1.7966e+07    -3.0856e+06    1.8519e+07    -8.3288e+06      1.125e+07     1.1824e+07      6.192e+06     1.9003e+07
    30-Nov-2020 22:28:44    1.4562e+07    -1.7939e+07    -2.2062e+06    1.8271e+07     -7.878e+06     1.1958e+07      1.128e+07     6.8025e+06     1.9125e+07
    30-Nov-2020 22:40:57    1.4983e+07    -1.7724e+07     3.0748e+05    1.7492e+07     -6.472e+06     1.3824e+07      9.757e+06     8.5761e+06     1.9251e+07
    30-Nov-2020 22:54:44    1.5245e+07    -1.7219e+07     3.1374e+06    1.6506e+07    -4.6682e+06     1.5645e+07     8.1023e+06     1.0623e+07     1.8999e+07
    30-Nov-2020 23:08:36    1.5308e+07    -1.6416e+07     5.9118e+06    1.5446e+07    -2.6463e+06     1.7132e+07      6.541e+06     1.2681e+07     1.8329e+07
    30-Nov-2020 23:24:15    1.5183e+07    -1.5144e+07     8.8865e+06    1.4218e+07    -1.4887e+05     1.8358e+07     4.9309e+06     1.4942e+07     1.7089e+07
    30-Nov-2020 23:40:33    1.4888e+07    -1.3412e+07     1.1718e+07    1.2964e+07     2.6318e+06     1.9086e+07     3.4517e+06     1.7146e+07      1.529e+07
    30-Nov-2020 23:57:25    1.4477e+07    -1.1213e+07     1.4269e+07    1.1748e+07     5.6176e+06      1.923e+07     2.1441e+06     1.9174e+07     1.2944e+07
    01-Dec-2020 00:15:24    1.3994e+07    -8.4611e+06     1.6479e+07    1.0588e+07     8.8233e+06     1.8695e+07      9.861e+05      2.096e+07     9.9781e+06
    01-Dec-2020 00:33:57    1.3527e+07    -5.2723e+06     1.8119e+07    9.5707e+06     1.2021e+07      1.742e+07          14938     2.2298e+07     6.5344e+06
    01-Dec-2020 00:53:11    1.3142e+07    -1.7143e+06     1.9066e+07    8.7131e+06     1.5075e+07     1.5378e+07    -8.1352e+05     2.3065e+07     2.6968e+06
    01-Dec-2020 01:12:46    1.2901e+07     2.0218e+06     1.9203e+07    8.0192e+06     1.7771e+07     1.2634e+07    -1.5539e+06     2.3146e+07    -1.3246e+06
    01-Dec-2020 01:32:20    1.2826e+07     5.7119e+06     1.8499e+07     7.449e+06     1.9927e+07     9.3368e+06    -2.2854e+06      2.251e+07    -5.2889e+06
    01-Dec-2020 01:51:55    1.2899e+07     9.1955e+06     1.6986e+07    6.9227e+06     2.1452e+07     5.6297e+06    -3.1024e+06     2.1184e+07    -9.0243e+06
      ⋮

Установка графических свойств на спутниках

Средства просмотра со многими спутниками могут стать переполненными и трудными для чтения. Чтобы сохранить окно читаемым, вручную управляйте графическими свойствами элементов сценария.

Скрыть метки спутника и наземные дорожки.

set(sat, "ShowLabel", false);
hide([sat(:).GroundTrack]);

Установите спутник в той же орбитальной плоскости, чтобы иметь тот же цвет орбиты.

set(sat(1:8), "MarkerColor", "red");
set(sat(9:16), "MarkerColor", "blue");
set(sat(17:24), "MarkerColor", "green");
orbit = [sat(:).Orbit];
set(orbit(1:8), "LineColor", "red");
set(orbit(9:16), "LineColor", "blue");
set(orbit(17:24), "LineColor", "green");

Добавление наземных станций к сценарию

Чтобы предоставить точные данные о местоположении, местоположение на Земле должно иметь доступ как минимум к 4 спутникам в созвездии в любой данный момент времени. В этом примере используйте три местоположения MathWorks, чтобы сравнить общий доступ к созвездиям за 1-дневное окно анализа с различными областями Земли:

  • Штаб-квартира MathWorks в Натике, Массачусетс, США (42.30048 °, -71.34908 °)

  • MathWorks München in Ismaning (около Мюнхена), Германия (48.23206 °, 11.68445 °)

  • MathWorks Bangalore в Бангалоре, Индия (12.94448 °, 77.69256 °)

gsUS = groundStation(scenario, 42.30048, -71.34908, ...
    "MinElevationAngle", 10, "Name", "MW Natick");
gsDE = groundStation(scenario, 48.23206, 11.68445, ...
    "MinElevationAngle", 10, "Name", "MW Munchen");
gsIN = groundStation(scenario, 12.94448, 77.69256, ...
    "MinElevationAngle", 10, "Name", "MW Bangalore");

figure
geoscatter([gsUS.Latitude gsDE.Latitude gsIN.Latitude], ...
    [gsUS.Longitude gsDE.Longitude gsIN.Longitude], "red", "filled")
geolimits([-75 75], [-180 180])
title("MathWorks Ground Stations")

Вычисление доступа наземной станции к спутнику (видимость линии видимости)

Вычислите доступ к линии видимости между наземными станциями и каждым отдельным спутником с помощью access способ.

for idx = 1:numel(sat)
    access(gsUS, sat(idx));
    access(gsDE, sat(idx));
    access(gsIN, sat(idx));
end
accessUS = [gsUS(:).Accesses];
accessDE = [gsDE(:).Accesses];
accessIN = [gsIN(:).Accesses];

Установите цвета доступа, чтобы соответствовать цветам орбитальной плоскости, назначенным ранее в примере.

set(accessUS(1:8), "LineColor", "red");
set(accessUS(9:16), "LineColor", "blue");
set(accessUS(17:24), "LineColor", "green");

set(accessDE(1:8), "LineColor", "red");
set(accessDE(9:16), "LineColor", "blue");
set(accessDE(17:24), "LineColor", "green");

set(accessIN(1:8), "LineColor", "red");
set(accessIN(9:16), "LineColor", "blue");
set(accessIN(17:24), "LineColor", "green");

Просмотрите полную таблицу доступа между каждой наземной станцией и всеми спутниками в совокупности как таблицы. Отсортируйте интервалы доступа по времени начала интервала. Спутники, добавленные из эфемеридных данных, не отображают значения для StartOrbit и конечные Orbit.

intervalsUS = accessIntervals(accessUS);
intervalsUS = sortrows(intervalsUS, "StartTime", "ascend")
intervalsUS=52×8 table
      Source          Target       IntervalNumber         StartTime                EndTime           Duration    StartOrbit    EndOrbit
    ___________    ____________    ______________    ____________________    ____________________    ________    __________    ________

    "MW Natick"    "GALILEO 1"           1           30-Nov-2020 22:23:24    01-Dec-2020 01:40:24     11820         NaN          NaN   
    "MW Natick"    "GALILEO 2"           1           30-Nov-2020 22:23:24    01-Dec-2020 00:08:24      6300         NaN          NaN   
    "MW Natick"    "GALILEO 3"           1           30-Nov-2020 22:23:24    30-Nov-2020 22:34:24       660         NaN          NaN   
    "MW Natick"    "GALILEO 12"          1           30-Nov-2020 22:23:24    30-Nov-2020 23:35:24      4320         NaN          NaN   
    "MW Natick"    "GALILEO 13"          1           30-Nov-2020 22:23:24    30-Nov-2020 22:47:24      1440         NaN          NaN   
    "MW Natick"    "GALILEO 18"          1           30-Nov-2020 22:23:24    01-Dec-2020 01:51:24     12480         NaN          NaN   
    "MW Natick"    "GALILEO 19"          1           30-Nov-2020 22:23:24    01-Dec-2020 00:13:24      6600         NaN          NaN   
    "MW Natick"    "GALILEO 20"          1           30-Nov-2020 22:23:24    30-Nov-2020 22:27:24       240         NaN          NaN   
    "MW Natick"    "GALILEO 11"          1           30-Nov-2020 22:38:24    01-Dec-2020 00:00:24      4920         NaN          NaN   
    "MW Natick"    "GALILEO 17"          1           30-Nov-2020 22:47:24    01-Dec-2020 03:19:24     16320         NaN          NaN   
    "MW Natick"    "GALILEO 8"           1           30-Nov-2020 23:09:24    01-Dec-2020 03:15:24     14760         NaN          NaN   
    "MW Natick"    "GALILEO 7"           1           01-Dec-2020 00:28:24    01-Dec-2020 04:55:24     16020         NaN          NaN   
    "MW Natick"    "GALILEO 24"          1           01-Dec-2020 00:29:24    01-Dec-2020 04:40:24     15060         NaN          NaN   
    "MW Natick"    "GALILEO 6"           1           01-Dec-2020 01:54:24    01-Dec-2020 06:41:24     17220         NaN          NaN   
    "MW Natick"    "GALILEO 23"          1           01-Dec-2020 02:04:24    01-Dec-2020 05:52:24     13680         NaN          NaN   
    "MW Natick"    "GALILEO 5"           1           01-Dec-2020 03:30:24    01-Dec-2020 08:25:24     17700         NaN          NaN   
      ⋮

intervalsDE = accessIntervals(accessDE);
intervalsDE = sortrows(intervalsDE, "StartTime", "ascend")
intervalsDE=51×8 table
       Source          Target       IntervalNumber         StartTime                EndTime           Duration    StartOrbit    EndOrbit
    ____________    ____________    ______________    ____________________    ____________________    ________    __________    ________

    "MW Munchen"    "GALILEO 2"           1           30-Nov-2020 22:23:24    01-Dec-2020 02:01:24     13080         NaN          NaN   
    "MW Munchen"    "GALILEO 3"           1           30-Nov-2020 22:23:24    01-Dec-2020 00:20:24      7020         NaN          NaN   
    "MW Munchen"    "GALILEO 4"           1           30-Nov-2020 22:23:24    30-Nov-2020 22:40:24      1020         NaN          NaN   
    "MW Munchen"    "GALILEO 19"          1           30-Nov-2020 22:23:24    01-Dec-2020 00:42:24      8340         NaN          NaN   
    "MW Munchen"    "GALILEO 20"          1           30-Nov-2020 22:23:24    30-Nov-2020 23:35:24      4320         NaN          NaN   
    "MW Munchen"    "GALILEO 10"          1           30-Nov-2020 22:38:24    30-Nov-2020 22:49:24       660         NaN          NaN   
    "MW Munchen"    "GALILEO 18"          1           30-Nov-2020 22:42:24    01-Dec-2020 01:37:24     10500         NaN          NaN   
    "MW Munchen"    "GALILEO 9"           1           30-Nov-2020 22:44:24    01-Dec-2020 00:43:24      7140         NaN          NaN   
    "MW Munchen"    "GALILEO 1"           1           30-Nov-2020 22:55:24    01-Dec-2020 03:37:24     16920         NaN          NaN   
    "MW Munchen"    "GALILEO 16"          1           30-Nov-2020 23:24:24    01-Dec-2020 02:15:24     10260         NaN          NaN   
    "MW Munchen"    "GALILEO 17"          1           01-Dec-2020 00:13:24    01-Dec-2020 02:19:24      7560         NaN          NaN   
    "MW Munchen"    "GALILEO 15"          1           01-Dec-2020 00:18:24    01-Dec-2020 03:45:24     12420         NaN          NaN   
    "MW Munchen"    "GALILEO 8"           1           01-Dec-2020 00:36:24    01-Dec-2020 05:07:24     16260         NaN          NaN   
    "MW Munchen"    "GALILEO 14"          1           01-Dec-2020 01:24:24    01-Dec-2020 05:17:24     13980         NaN          NaN   
    "MW Munchen"    "GALILEO 24"          1           01-Dec-2020 01:57:24    01-Dec-2020 02:36:24      2340         NaN          NaN   
    "MW Munchen"    "GALILEO 7"           1           01-Dec-2020 02:16:24    01-Dec-2020 06:29:24     15180         NaN          NaN   
      ⋮

intervalsIN = accessIntervals(accessIN);
intervalsIN = sortrows(intervalsIN, "StartTime", "ascend")
intervalsIN=45×8 table
        Source           Target       IntervalNumber         StartTime                EndTime           Duration    StartOrbit    EndOrbit
    ______________    ____________    ______________    ____________________    ____________________    ________    __________    ________

    "MW Bangalore"    "GALILEO 3"           1           30-Nov-2020 22:23:24    01-Dec-2020 02:38:24     15300         NaN          NaN   
    "MW Bangalore"    "GALILEO 4"           1           30-Nov-2020 22:23:24    01-Dec-2020 01:05:24      9720         NaN          NaN   
    "MW Bangalore"    "GALILEO 5"           1           30-Nov-2020 22:23:24    30-Nov-2020 23:17:24      3240         NaN          NaN   
    "MW Bangalore"    "GALILEO 9"           1           30-Nov-2020 22:23:24    01-Dec-2020 00:55:24      9120         NaN          NaN   
    "MW Bangalore"    "GALILEO 10"          1           30-Nov-2020 22:23:24    30-Nov-2020 23:19:24      3360         NaN          NaN   
    "MW Bangalore"    "GALILEO 16"          1           30-Nov-2020 22:23:24    01-Dec-2020 02:42:24     15540         NaN          NaN   
    "MW Bangalore"    "GALILEO 21"          1           30-Nov-2020 22:23:24    30-Nov-2020 23:02:24      2340         NaN          NaN   
    "MW Bangalore"    "GALILEO 22"          1           30-Nov-2020 22:23:24    30-Nov-2020 22:29:24       360         NaN          NaN   
    "MW Bangalore"    "GALILEO 15"          1           30-Nov-2020 23:36:24    01-Dec-2020 05:12:24     20160         NaN          NaN   
    "MW Bangalore"    "GALILEO 2"           1           30-Nov-2020 23:44:24    01-Dec-2020 04:05:24     15660         NaN          NaN   
    "MW Bangalore"    "GALILEO 21"          2           01-Dec-2020 01:15:24    01-Dec-2020 04:12:24     10620         NaN          NaN   
    "MW Bangalore"    "GALILEO 1"           1           01-Dec-2020 01:20:24    01-Dec-2020 05:26:24     14760         NaN          NaN   
    "MW Bangalore"    "GALILEO 14"          1           01-Dec-2020 01:29:24    01-Dec-2020 07:33:24     21840         NaN          NaN   
    "MW Bangalore"    "GALILEO 20"          1           01-Dec-2020 02:04:24    01-Dec-2020 05:56:24     13920         NaN          NaN   
    "MW Bangalore"    "GALILEO 8"           1           01-Dec-2020 02:56:24    01-Dec-2020 06:37:24     13260         NaN          NaN   
    "MW Bangalore"    "GALILEO 19"          1           01-Dec-2020 03:20:24    01-Dec-2020 07:32:24     15120         NaN          NaN   
      ⋮

Просмотр сценария спутника

Откройте 3-D окно средства просмотра сценария. Окно средства просмотра содержит все 24 спутника и три наземные станции, определенные ранее в этом примере. Линия рисуется между каждой наземной станцией и спутником во время их соответствующих интервалов доступа.

viewer3D = satelliteScenarioViewer(scenario);

Сравнение доступа между наземными станциями

Вычислите состояние доступа между каждым спутником и наземной станцией с помощью метода accessStatus. Постройте график кумулятивного доступа для каждой наземной станции в окне однодневного анализа.

% Initialize array with size equal to number of timesteps in scenario
timeSteps = mission.StartDate:seconds(60):mission.StartDate+days(1);
statusUS = zeros(1, numel(timeSteps));
statusDE = statusUS;
statusIN = statusUS;

% Sum cumulative access at each timestep
for idx = 1:24
    statusUS = statusUS + accessStatus(accessUS(idx));
    statusDE = statusDE + accessStatus(accessDE(idx));
    statusIN = statusIN + accessStatus(accessIN(idx));
end
clear idx;

subplot(3,1,1);
plot(timeSteps, statusUS);
title("MW Natick to GALILEO")
ylabel("# of satellites")
subplot(3,1,2);
plot(timeSteps, statusDE);
title("MW München to GALILEO")
ylabel("# of satellites")
subplot(3,1,3);
plot(timeSteps, statusIN);
title("MW Bangalore to GALILEO")
ylabel("# of satellites")

Собирайте метрики интервала доступа для каждой наземной станции в таблице для сравнения.

statusTable = [table(height(intervalsUS), height(intervalsDE), height(intervalsIN)); ...
    table(sum(intervalsUS.Duration)/3600, sum(intervalsDE.Duration)/3600, sum(intervalsIN.Duration)/3600); ...
    table(mean(intervalsUS.Duration/60), mean(intervalsDE.Duration/60), mean(intervalsIN.Duration/60)); ...
    table(mean(statusUS, 2), mean(statusDE, 2), mean(statusIN, 2)); ...
    table(min(statusUS), min(statusDE), min(statusIN)); ...
    table(max(statusUS), max(statusDE), max(statusIN))];
statusTable.Properties.VariableNames = ["MW Natick", "MW München", "MW Bangalore"];
statusTable.Properties.RowNames = ["Total # of intervals", "Total interval time (hrs)",...
    "Mean interval length (min)", "Mean # of satellites in view", ...
    "Min # of satellites in view", "Max # of satellites in view"];
statusTable
statusTable=6×3 table
                                    MW Natick    MW München    MW Bangalore
                                    _________    __________    ____________

    Total # of intervals                 52            51             45   
    Total interval time (hrs)        153.92        153.55         162.73   
    Mean interval length (min)        177.6        180.65         216.98   
    Mean # of satellites in view     6.4448        6.4289         6.8071   
    Min # of satellites in view           4             4              4   
    Max # of satellites in view           8             9              9   

Созвездия Волкера-Дельты, подобные Галилею, равномерно распределены по долготам. Натик и Мюнхен расположены в сходных широтах, и поэтому имеют очень сходные характеристики доступа относительно созвездия. Бангалор находится на широте ближе к экватору. Несмотря на меньшее количество отдельных интервалов доступа, он имеет самое большое среднее количество спутников на виду, самое большое общее время интервала и самую длинную среднюю длительность интервала (на 40 минут). Все местоположения всегда имеют минимум 4 спутника, как требуется для трилатерации GNSS.

Ссылки

[1] Wertz, James R, David F. Everett, and Jeffery J. Puschell. Space Mission Engineering: The New Smad. Хоторн, Калифорния: Microcosm Press, 2011. Печать.

[2] Европейское космическое агентство: Галилео Факты и фигур. https://www.esa.int/Applications/Navigation/Galileo/Facts_and_figures