Main Content

transmitter

Add transmitter to satellite scenario

Description

transmitter(parent) adds a Transmitter object to the parent which can be a Satellites, GroundStations, or Gimbals.

example

transmitter(parent,Name,Value) adds transmitters to parents in parent using additional parameters specified by optional name-value arguments. For example, 'MountingAngle',[20; 35; 10] sets the yaw, pitch, and roll angles of the transmitter to 20, 35, and 10 degrees, respectively.

tx = transmitter(___) returns added transmitters as a row vector tx. Specify any input argument combination from previous syntaxes.

Note

When AutoSimulate of the satellite scenario is false, you can call transmitter only when SimulationStatus is NotStarted. Otherwise, you must call the restart function to erase the simulation data and reset the SimulationStatus to NotStarted.

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
           Viewers: [0×0 matlabshared.satellitescenario.Viewer]
        Satellites: [1×0 matlabshared.satellitescenario.Satellite]
    GroundStations: [1×0 matlabshared.satellitescenario.GroundStation]
          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 a transmitter to the satellite.

frequency = 27e9;                                                                             % Hz
power = 20;                                                                                   % dBW
bitRate = 20;                                                                                 % Mbps
systemLoss = 3;                                                                               % dB
txSat = transmitter(sat,"Name","Satellite Transmitter","Frequency",frequency,"power",power,...
        "BitRate",bitRate,"SystemLoss",systemLoss)
txSat = 
  Transmitter with properties:

                Name:  Satellite Transmitter
                  ID:  2
    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]

Add a receiver to the satellite.

gainToNoiseTemperatureRatio = 5;                                                                              % dB/K
systemLoss = 3;                                                                                               % dB
rxSat = receiver(sat,"Name","Satellite Receiver","GainToNoiseTemperatureRatio",gainToNoiseTemperatureRatio,...
        "SystemLoss",systemLoss)
rxSat = 
  Receiver with properties:

                           Name:  Satellite Receiver
                             ID:  3
               MountingLocation:  [0; 0; 0] meters
                 MountingAngles:  [0; 0; 0] degrees
                        Antenna:  [1x1 satcom.satellitescenario.GaussianAntenna]
                     SystemLoss:  3 decibels
    GainToNoiseTemperatureRatio:  5 decibels/Kelvin
                   RequiredEbNo:  10 decibels

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");

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

mountingLocation = [0; 0; -5];                                                              % meters
mountingAngles = [0; 180; 0];                                                               % degrees
gimbalGs1 = gimbal(gs1,"MountingLocation",mountingLocation,"MountingAngles",mountingAngles);
gimbalGs2 = gimbal(gs2,"MountingLocation",mountingLocation,"MountingAngles",mountingAngles);

Track the satellite using the gimbals.

pointAt(gimbalGs1,sat);
pointAt(gimbalGs2,sat);

Add a transmitter to gimbal gimbalGs1.

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

Add a receiver to gimbal gimbalGs2.

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);

Add link analysis to transmitter txGs1.

lnk = link(txGs1,rxSat,txSat,rxGs2)
lnk = 
  Link with properties:

    Sequence:  [8 3 2 9]
    LineWidth:  1
    LineColor:  [0 1 0]

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

linkIntervals(lnk)
ans =

  0×8 empty table

Visualize the link using the Satellite Scenario Viewer.

play(sc);

Input Arguments

collapse all

Element of scenario to which the transmitter is added, specified as a scalar or vector of satellites, ground stations or gimbals. The number of transmitters specified is determined by the size of the inputs.

  • If parent is a scalar, all transmitters are added to the parent.

  • If parent is a vector and the number of transmitters specified is one, that transmitter is added to each parent.

  • If parent is a vector and the number of transmitters specified is more than one, the number of transmitters must equal the number of parents and each parent gets one transmitter.

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: 'MountingAngle',[20; 35; 10] sets the yaw, pitch, and roll angles of the transmitter to 20, 35, and 10 degrees, respectively.

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

transmitter name, specified as a comma-separated pair consisting of 'Name' and a string scalar, string vector, character vector or a cell array of character vectors.

  • If only one transmitter is added, specify Name as a string scalar or a character vector.

  • If multiple transmitters are added, specify Name as a string scalar, character vector, string vector or a cell array of character vectors. All transmitters added as a string scalar or a character vector are assigned the same specified name. The number of elements in the string vector or cell array of character vector must equal the number of transmitters being added. Each transmitter is assigned the corresponding name from the vector or cell array.

In the default value, idx is the ID of the transmitters added by the transmitter object function.

Data Types: char | string

Mounting location with respect to the parent object in meters, specified as a three-element vector or a matrix. The position vector is specified in the body frame of the input parent.

  • One transmitter — MountingLocation is a three-element vector.

  • Multiple transmitters — MountingLocation can be a three-element vector or a matrix. When specified as a vector, the same MountingLocations are assigned to all specified transmitters. When specified as a matrix, MountingLocation must contain three rows and the same number of columns as the transmitters. The columns correspond to the mounting location of each specified transmitter and the rows correspond to the mounting location coordinates in the parent body frame.

When the AutoSimulate property of the satellite scenario is false, you can modify the MountingLocation property only when the SimulationStatus is NotStarted. You can use the restart function to reset SimulationStatus to NotStarted, but doing so erases the simulation data.

Data Types: double

Mounting orientation with respect to parent object in degrees, specified as a three-element row vector of positive numbers. The elements of the vector correspond to yaw, pitch, and roll in that order. Yaw, pitch, and roll are positive rotations about the parent's z - axis, intermediate y - axis and intermediate x - axis of the parent.

  • One transmitter — MountingAngles is a three-element vector.

  • Multiple transmitters — MountingAngles can be a three-element vector or a matrix. When specified as a vector, the same MountingAngless are assigned to all specified transmitters. When specified as a matrix, MountingAngles must contain three rows and the same number of columns as the transmitters. The columns correspond to the mounting angles of each specified transmitter and the rows correspond to the yaw, pitch, and roll angles parent body frame.

When the AutoSimulate property of the satellite scenario is false, you can modify the MountingAngles property only when the SimulationStatus is NotStarted. You can use the restart function to reset SimulationStatus to NotStarted, but doing so erases the simulation data.

Example: [0; 30; 60]

Data Types: double

Antenna object associated with the transmitter, specified as either a scalar or a vector. This object can be the default gaussianAntenna object, or one from the Antenna Toolbox or Phased Array System Toolbox. The default Gaussian antenna has a dish diameter of 1 m and an aperture efficiency of 0.65.

Antenna can be specified in transmitter as a name-value pair consisting of 'Antenna' and a scalar, antenna or phased array objects.

  • If only one transmitter is added, Antenna must be a scalar.

  • If multiple transmitters are added, Antenna as a vector. The same antenna is assigned to all transmitters.

System loss in dB, specified as a scalar or a vector.

System loss can be specified in transmitter as a name-value pair consisting of 'SystemLoss' and a scalar, or vector.

  • If only one transmitter is added, specify SystemLoss as a scalar.

  • If multiple transmitters are added, specify SystemLoss as a scalar or a vector. When SystemLoss is a scalar, the same SystemLoss is assigned to all transmitters. When SystemLoss is a vector, its length must equal the number of transmitter and each element of SystemLoss is assigned to the corresponding transmitter specified.

When AutoSimulate property of the satellite scenario is false, you can modify the SystemLoss value while the SimulationStatus is NotStarted or InProgress.

Transmitter frequency in Hz, specified as a name-value pair consisting of 'Frequency' and a scalar double or a vector double.

  • If one transmitter is added, the Frequency must be a scalar.

  • If multiple transmitters are added, the frequency value can be a scalar or a vector. All transmitters added as a scalar are assigned the same specified Frequency. The length of the vector must equal the number of transmitters added and each element of Frequency is assigned to the corresponding transmitter specified.

When AutoSimulate of the satellite scenario is false, you can modify the Frequency value while the SimulationStatus is NotStarted or InProgress.

Bit rate of the transmitter in Mbps, specified as a name-value pair consisting of 'BitRate' and a scalar double or a vector double.

  • If one transmitter is added, the bit rate value must be a scalar.

  • If multiple transmitters are added, the bit rate value can be a scalar or a vector. All transmitters added as a scalar are assigned the same specified BitRate. The length of the vector must equal the number of transmitters added and each element of BitRate is assigned to the corresponding transmitter specified.

When AutoSimulate of the satellite scenario is false, you can modify the BitRate value while the SimulationStatus is NotStarted or InProgress.

Power of the high power amplifier in dbW, specified as a name-value pair consisting of 'Power' and a scalar double or a vector double.

  • If one transmitter is added, the power value must be a scalar.

  • If multiple transmitters are added, the power value can be a scalar or a vector. All transmitters added as a scalar are assigned the same specified Power. The length of the vector must equal the number of transmitters added and each element of Power is assigned to the corresponding transmitter specified.

When AutoSimulate of the satellite scenario is false, you can modify the Power value while the SimulationStatus is NotStarted or InProgress.

Output Arguments

collapse all

Transmitters attached to parent, returned as a row vector.

Version History

Introduced in R2021a