link
Description
link(
adds asset1,asset2,...,assetN
)Link
analysis
objects defined by nodes asset1
, asset2
, and so
on.
adds
link analysis objects using additional parameters specified as name-value pairs.lnk
= link(___,Name=Value)
adds link analysis
objects and returns the vector linklnk
= link(___)
Examples
Determine Times of Availability for Satellite Link Between Two Ground Stations
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] Platforms: [1×0 matlabshared.satellitescenario.Platform] 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 CoordinateAxes: [1x1 matlabshared.satellitescenario.CoordinateAxes]
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] CoordinateAxes: [1x1 matlabshared.satellitescenario.CoordinateAxes]
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:20:00 25-Nov-2020 00:40:00 1200 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);
Determine Change in Link and Link Intervals
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
Input Arguments
asset1,asset2,...,assetN
— Adds link analysis objects
scalar | vector
Adds link analysis objects defined by asset nodes, specified as a scalar or vector.
The asset type must be either a transmitter object or a receiver object.
asset1
must always be a transmitter and assetN
must always be a receiver object.
If the asset in a given node is scalar, every link analysis object uses the same asset for that node position.
If the asset in a given node is vector, the asset length must equal the number of link analysis objects.
If there are more than 2 inputs, you create a multi-hop link model and each transmitter and receiver must be passed in an alternating order like
tx1,rx1,tx2,rx2
. Here the assets with the same id numbers must belong to the same satellite or ground station. Each multi-hop is also a separate sequence of dimensions [1,n].
Each link analysis object uses the corresponding element of the asset vector for
that node location. The IDs of ASSET1, ASSET2, ASSET3, and so on, specify the Sequence of
the link. These objects must belong to the same satelliteScenario
object. Each link analysis object is added to the Link
property of the corresponding transmitter in ASSET1.
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN
, where Name
is
the argument name and Value
is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Before R2021a, use commas to separate each name and value, and enclose
Name
in quotes.
Example: LineWidth=2.5
sets the line width of the field of view to 2.5
pixels.
Viewer
— Satellite scenario viewer
vector of satelliteScenarioViewer
objects (default) | scalar satelliteScenarioViewer
object | array of satelliteScenarioViewer
objects
Satellite scenario viewer, specified as a scalar, vector, or array of satelliteScenarioViewer
objects. If the AutoSimulate
property of the scenario is false
,
adding a satellite to the scenario disables any previously available timeline and
playback widgets.
Output Arguments
lnk
— Link analysis
scalar | row vector
Link analysis object between input objects, returned as either a scalar or a row vector.
Note
When AutoSimulate
of the satellite scenario is false
, you can
call link
only when the SimulationStatus
is NotStarted
. Otherwise, you must call
the restart
function to erase the simulation data and reset the SimulationStatus
to NotStarted
.
Version History
Introduced in R2021a
See Also
Objects
Functions
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)