Main Content

Link

Link analysis object belonging to Transmitter

Since R2021a

    Description

    The Link object defines a link analysis object belonging to Transmitter.

    Creation

    You can create a Link object using the link object function of the Transmitter or Receiver objects.

    Properties

    expand all

    You can set this property only when calling Link. After you call Link, this property is read-only.

    Transmitter or receiver ID, specified as a vector of positive numbers.

    Visual width of link line in pixels, specified as a scalar in the range (0 10].

    The line width cannot be thinner than the width of a pixel. If you set the line width to a value that is less than the width of a pixel on your system, the line displays as one pixel wide.

    Color of the link line, specified as an RGB triplet, a hexadecimal color code, a color name, or a short name.

    For a custom color, specify an RGB triplet or a hexadecimal color code.

    • An RGB triplet is a three-element row vector whose elements specify the intensities of the red, green, and blue components of the color. The intensities must be in the range [0,1], for example, [0.4 0.6 0.7].

    • A hexadecimal color code is a string scalar or character vector that starts with a hash symbol (#) followed by three or six hexadecimal digits, which can range from 0 to F. The values are not case sensitive. Therefore, the color codes "#FF8800", "#ff8800", "#F80", and "#f80" are equivalent.

    Alternatively, you can specify some common colors by name. This table lists the named color options, the equivalent RGB triplets, and hexadecimal color codes.

    Color NameShort NameRGB TripletHexadecimal Color CodeAppearance
    "red""r"[1 0 0]"#FF0000"

    Sample of the color red

    "green""g"[0 1 0]"#00FF00"

    Sample of the color green

    "blue""b"[0 0 1]"#0000FF"

    Sample of the color blue

    "cyan" "c"[0 1 1]"#00FFFF"

    Sample of the color cyan

    "magenta""m"[1 0 1]"#FF00FF"

    Sample of the color magenta

    "yellow""y"[1 1 0]"#FFFF00"

    Sample of the color yellow

    "black""k"[0 0 0]"#000000"

    Sample of the color black

    "white""w"[1 1 1]"#FFFFFF"

    Sample of the color white

    "none"Not applicableNot applicableNot applicableNo color

    Here are the RGB triplets and hexadecimal color codes for the default colors MATLAB® uses in many types of plots.

    RGB TripletHexadecimal Color CodeAppearance
    [0 0.4470 0.7410]"#0072BD"

    Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

    [0.8500 0.3250 0.0980]"#D95319"

    Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

    [0.9290 0.6940 0.1250]"#EDB120"

    Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

    [0.4940 0.1840 0.5560]"#7E2F8E"

    Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

    [0.4660 0.6740 0.1880]"#77AC30"

    Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

    [0.3010 0.7450 0.9330]"#4DBEEE"

    Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

    [0.6350 0.0780 0.1840]"#A2142F"

    Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

    Example: 'blue'

    Example: [0 0 1]

    Example: '#0000FF'

    Object Functions

    ebnoEb/No at final node of link
    linkPercentagePercentage of time when link between first and last node in link analysis is closed
    linkIntervalsIntervals during which link is closed
    linkStatusStatus of link closure between first and last node
    showShow object in satellite scenario viewer
    sigstrengthCalculate received signal strength at last node of link
    hideHide satellite scenario entity from viewer

    Examples

    collapse all

    Create a satellite scenario object.

    startTime = datetime(2020,11,25,0,0,0);
    stopTime = startTime + days(1);
    sampleTime = 60;                                     % seconds
    sc = satelliteScenario(startTime,stopTime,sampleTime)
    sc = 
      satelliteScenario with properties:
    
             StartTime: 25-Nov-2020
              StopTime: 26-Nov-2020
            SampleTime: 60
          AutoSimulate: 1
            Satellites: [1×0 matlabshared.satellitescenario.Satellite]
        GroundStations: [1×0 matlabshared.satellitescenario.GroundStation]
               Viewers: [0×0 matlabshared.satellitescenario.Viewer]
              AutoShow: 1
    
    

    Add a satellite to the scenario.

    semiMajorAxis = 10000000;                                                                  % meters
    eccentricity = 0;
    inclination = 60;                                                                          % degrees
    rightAscensionOfAscendingNode = 0;                                                         % degrees
    argumentOfPeriapsis = 0;                                                                   % degrees
    trueAnomaly = 0;                                                                           % degrees
    sat = satellite(sc,semiMajorAxis,eccentricity,inclination,rightAscensionOfAscendingNode, ...
            argumentOfPeriapsis,trueAnomaly,Name="Satellite");

    Add gimbals to the satellite. These gimbals enable the satellite receiver antenna to steer to the first ground station, and its transmitter antenna to steer to the second ground station.

    gimbalrxSat = gimbal(sat);
    gimbaltxSat = gimbal(sat);

    Add a receiver to the first gimbal of the satellite.

    gainToNoiseTemperatureRatio = 5;                                                        % dB/K
    systemLoss = 3;                                                                         % dB
    rxSat = receiver(gimbalrxSat,Name="Satellite Receiver",GainToNoiseTemperatureRatio= ...
        gainToNoiseTemperatureRatio,SystemLoss=systemLoss)
    rxSat = 
      Receiver with properties:
    
                               Name:  Satellite Receiver
                                 ID:  4
                   MountingLocation:  [0; 0; 0] meters
                     MountingAngles:  [0; 0; 0] degrees
                            Antenna:  [1x1 satcom.satellitescenario.GaussianAntenna]
                         SystemLoss:  3 decibels
                    PreReceiverLoss:  3 decibels
        GainToNoiseTemperatureRatio:  5 decibels/Kelvin
                       RequiredEbNo:  10 decibels
    
    

    Add a transmitter to the second gimbal of the satellite.

    frequency = 27e9;                                                                     % Hz
    power = 20;                                                                           % dBW
    bitRate = 20;                                                                         % Mbps
    systemLoss = 3;                                                                       % dB
    txSat = transmitter(gimbaltxSat,Name="Satellite Transmitter",Frequency=frequency, ...
        power=power,BitRate=bitRate,SystemLoss=systemLoss)
    txSat = 
      Transmitter with properties:
    
                    Name:  Satellite Transmitter
                      ID:  5
        MountingLocation:  [0; 0; 0] meters
          MountingAngles:  [0; 0; 0] degrees
                 Antenna:  [1x1 satcom.satellitescenario.GaussianAntenna]
              SystemLoss:  3 decibels
               Frequency:  2.7e+10 Hertz
                 BitRate:  20 Mbps
                   Power:  20 decibel-watts
                   Links:  [1x0 satcom.satellitescenario.Link]
    
    

    Specify the antenna specifications of the repeater.

    dishDiameter = 0.5;                                                                    % meters
    apertureEfficiency = 0.5;
    gaussianAntenna(txSat,DishDiameter=dishDiameter,ApertureEfficiency=apertureEfficiency);
    gaussianAntenna(rxSat,DishDiameter=dishDiameter,ApertureEfficiency=apertureEfficiency);

    Add two ground stations to the scenario.

    gs1 = groundStation(sc,Name="Ground Station 1");
    latitude = 52.2294963;                                              % degrees
    longitude = 0.1487094;                                              % degrees
    gs2 = groundStation(sc,latitude,longitude,Name="Ground Station 2");

    Point gimbals of the satellite towards the two ground stations for the simulation duration.

    pointAt(gimbaltxSat,gs2);
    pointAt(gimbalrxSat,gs1);

    Add gimbals to the ground stations. These gimbals enable the ground station antennas to steer towards the satellite.

    gimbalgs1 = gimbal(gs1);
    gimbalgs2 = gimbal(gs2);

    Add a transmitter to ground station gs1.

    frequency = 30e9;                                                                          % Hz
    power = 40;                                                                                % dBW
    bitRate = 20;                                                                              % Mbps
    txGs1 = transmitter(gimbalgs1,Name="Ground Station 1 Transmitter",Frequency=frequency, ...
            Power=power,BitRate=bitRate);

    Add a receiver to ground station gs2.

    requiredEbNo = 14;                                                                     % dB
    rxGs2 = receiver(gimbalgs2,Name="Ground Station 2 Receiver",RequiredEbNo=requiredEbNo);

    Define the antenna specifications of the ground stations.

    dishDiameter = 5;                                % meters
    gaussianAntenna(txGs1,DishDiameter=dishDiameter);
    gaussianAntenna(rxGs2,DishDiameter=dishDiameter);

    Point gimbals of the ground stations towards the satellite for the simulation duration.

    pointAt(gimbalgs1,sat);
    pointAt(gimbalgs2,sat);

    Add link analysis to transmitter txGs1.

    lnk = link(txGs1,rxSat,txSat,rxGs2)
    lnk = 
      Link with properties:
    
        Sequence:  [10 4 5 11]
        LineWidth:  2
        LineColor:  [0.3922 0.8314 0.0745]
    
    

    Determine the times when ground station gs1 can send data to ground station gs2 via the satellite.

    linkIntervals(lnk)
    ans=4×8 table
                    Source                          Target               IntervalNumber         StartTime                EndTime           Duration    StartOrbit    EndOrbit
        ______________________________    ___________________________    ______________    ____________________    ____________________    ________    __________    ________
    
        "Ground Station 1 Transmitter"    "Ground Station 2 Receiver"          1           25-Nov-2020 00:21:00    25-Nov-2020 00:40:00      1140         NaN          NaN   
        "Ground Station 1 Transmitter"    "Ground Station 2 Receiver"          2           25-Nov-2020 03:19:00    25-Nov-2020 03:36:00      1020         NaN          NaN   
        "Ground Station 1 Transmitter"    "Ground Station 2 Receiver"          3           25-Nov-2020 06:15:00    25-Nov-2020 06:36:00      1260         NaN          NaN   
        "Ground Station 1 Transmitter"    "Ground Station 2 Receiver"          4           25-Nov-2020 22:20:00    25-Nov-2020 22:38:00      1080         NaN          NaN   
    
    

    Visualize the link by using the Satellite Scenario Viewer.

    play(sc);

    The example shows a scenario where the link and link intervals change with the change in inclination of the satellite.

    startTime = datetime(2024,6,1,0,0,0);
    stopTime = startTime + hours(4);
    sampleTime = 60;% seconds
    sc = satelliteScenario(startTime,stopTime,sampleTime);

    Add satellite 1 to the scenario and a transmitter to it.

    sat1 = satellite(sc,10e6,0,0,0,0,0,Name="Satellite 1");
    txSat1 = transmitter(sat1,Name="Satellite 1 Transmitter");

    Add satellite 2 to the scenario and a receiver to it.

    sat2= satellite(sc,10e6,0,0,10,0,0,Name="Satellite 2");
    rxSat2 = receiver(sat2,Name="Satellite 2 Receiver"); 

    Add a ground station to the scenario.

    latitude = 49.8728; % degrees
    longitude = 8.6512; % degrees
    gs = groundStation(sc,latitude,longitude,Name="Ground Station");

    Point the two satellite at the ground station.

    pointAt(sat1,gs)
    pointAt(sat2,gs)

    Add gimbals to the ground station.

    gimbalrxGs = gimbal(gs);
    gimbaltxGs = gimbal(gs);

    Add transmitter and receiver to the ground station.

    rxGs = receiver(gimbalrxGs,Name="Ground Station Receiver");
    txGs = transmitter(gimbaltxGs,Name="Ground Station Transmitter");

    Point ground station transmitter and receiver to the satellite.

    pointAt(gimbalrxGs,sat1)
    pointAt(gimbaltxGs,sat2)

    Calculate the link between the ground station and satellites.

    lnk1 = link(txSat1,rxGs,txGs,rxSat2)
    lnk1 = 
      Link with properties:
    
        Sequence:  [2 8 9 4]
        LineWidth:  2
        LineColor:  [0.3922 0.8314 0.0745]
    
    

    Find the link intervals.

    linkIntervals(lnk1)
    ans=1×8 table
                 Source                      Target            IntervalNumber         StartTime                EndTime           Duration    StartOrbit    EndOrbit
        _________________________    ______________________    ______________    ____________________    ____________________    ________    __________    ________
    
        "Satellite 1 Transmitter"    "Satellite 2 Receiver"          1           01-Jun-2024 02:10:00    01-Jun-2024 02:14:00      240           1            1    
    
    

    Link interval from lnk1 shows that a valid link exists from satellit1 to satellite2 going through the ground station for a period of 7560 seconds.

    Update the scenario so that satellites are pointing at each other.

    pointAt(sat1,sat2)
    pointAt(sat2,sat1)

    Calculate the link interval for lnk1 with the updated scenario.

    linkIntervals(lnk1)
    ans =
    
      0×8 empty table
    
        Source    Target    IntervalNumber    StartTime    EndTime    Duration    StartOrbit    EndOrbit
        ______    ______    ______________    _________    _______    ________    __________    ________
    

    The linkInterval from lnk1 shows no intervals exist for the duration of the scenario as the ground station is no longer pointed at by either satellite antenna.

    Create a new link object, lnk2, from satellite 1 directly to satellite 2

    lnk2 = link(txSat1,rxSat2)
    lnk2 = 
      Link with properties:
    
        Sequence:  [2 4]
        LineWidth:  2
        LineColor:  [0.3922 0.8314 0.0745]
    
    

    Calculate the link interval for lnk2 in the updated scenario.

    linkIntervals(lnk2)
    ans=1×8 table
                 Source                      Target            IntervalNumber     StartTime           EndTime           Duration    StartOrbit    EndOrbit
        _________________________    ______________________    ______________    ___________    ____________________    ________    __________    ________
    
        "Satellite 1 Transmitter"    "Satellite 2 Receiver"          1           01-Jun-2024    01-Jun-2024 04:00:00     14400          1            2    
    
    

    Shows a link interval over the entire scenario because the satellites are pointed at each other for the entire scenario

    Version History

    Introduced in R2021a

    expand all