Main Content

receiver

Add receiver to satellite scenario

Since R2021a

Description

receiver(parent) adds a Receiver object to the parent using default parameters. parent can be a Satellites, GroundStations, Platforms, or Gimbals.

example

receiver(parent,Name=Value) adds receivers 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.

rx = receiver(___) returns added receivers as a row vector rx. Specify any input argument combination from previous syntaxes.

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

Input Arguments

collapse all

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

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

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

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

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 receiver to 20, 35, and 10 degrees, respectively.

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

Receiver name, specified as a name-value argument consisting of 'Name' and a string scalar, string vector, character vector, or a cell array of character vectors.

  • If you are adding only one receiver, specify Name as a string scalar or a character vector.

  • If you are adding multiple receivers, specify Name as a string scalar, character vector, string vector, or a cell array of character vectors. All receivers that you add 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 vectors must equal the number of receivers that you are adding. Each receiver is assigned the corresponding name from the vector or cell array.

In the default value, idx is the ID assigned by the satellite scenario.

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.

  • If you are adding one receiver, MountingLocation is a three-element vector. The elements specify the x, y, and z components of the Cartesian coordinates in the body frame of receiver.

  • If you are adding multiple receivers, MountingLocation can be a three-element vector or a matrix. When specified as a vector, the same set of mounting locations are assigned to all specified receivers. When specified as a matrix, MountingLocation must contain three rows and the same number of columns as the receivers. The columns correspond to the mounting location of each specified receiver 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 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 z-axis, intermediate y-axis, and intermediate x-axis of the parent.

  • If you are adding one receiver, the MountingAngles property is a three-element vector.

  • If you are adding multiple receivers the MountingAngles property can be a three-element vector or a matrix. When specified as a vector, the same set of mounting angles are assigned to all specified receivers. When specified as a matrix, MountingAngles must contain three rows and the same number of columns as the receivers. The columns correspond to the mounting angles of each specified receiver and the rows correspond to the yaw, pitch, and roll angles in the parent body frame.

When the AutoSimulate property of the satellite scenario is false, you can modify the MountingAngles property only when 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 receiver, 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 meter and an aperture efficiency of 0.65.

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

  • If you are adding only one receiver, Antenna must be a scalar.

  • If you are adding multiple receivers, Antenna is a vector. The same antenna is assigned to all receivers.

System loss in dB, specified as a scalar or a vector. SystemLoss must be greater than or equal to PreReceiverLoss.

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

  • If you are adding only one receiver, SystemLoss is a scalar.

  • If you are adding multiple receivers, SystemLoss is a scalar or a vector. When SystemLoss is a scalar, the same SystemLoss is assigned to all receivers. When SystemLoss is a vector, its length must equal the number of receivers and each element of SystemLoss is assigned to the corresponding receivers in the parent.

If you specify PreReceiverLoss property as a name value argument in receiver function , the default value is the greater of 5 dB and the specified PreReceiverLoss value.

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

Pre-receiver loss in dB, specified as a scalar or a vector. This is the total loss before the receiver input in the receiver system, such as feeder loss, radome loss, and loss due to polarization mismatch. PreReceiverLoss must be less than or equal to SystemLoss.

Pre-receiver loss can be specified in receiver function as a name-value pair consisting of 'PreReceiverLoss' and a scalar, or a vector.

  • If you are adding only one receiver, PreReceiverLoss is a scalar.

  • If you are adding multiple receivers, PreReceiverLoss is a scalar or a vector. When PreReceiverLoss is a scalar, the same PreReceiverLoss is assigned to all receivers. When PreReceiverLoss is a vector, its length must equal the number of receivers and each element of PreReceiverLoss is assigned to the corresponding receivers in the parent.

If you specify SystemLoss property as a name value argument in receiver function , the default value is the lesser of 3 dB and the specified SystemLoss value.

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

Maximum antenna gain to manufacturer specified noise temperature ratio in dB per Kelvin, specified as the name-value argument consisting of 'GainToNoiseTemperatureRatio' and a scalar or a vector.

  • If you are adding only one receiver, GainToNoiseTemperatureRatio is a scalar.

  • If you are adding multiple receivers, GainToNoiseTemperatureRatio is a scalar, or a vector. When GainToNoiseTemperatureRatio is a scalar, the same GainToNoiseTemperatureRatio is assigned to all receivers. When GainToNoiseTemperatureRatio is a vector, its length must equal the number of receivers and each element of GainToNoiseTemperatureRatio is assigned to the corresponding receiver in the parent.

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

Minimum energy per bit to noise power spectral density ratio (Eb/No) necessary for link closure in dB, specified as the name-value pair consisting of 'RequiredEbNo' and a scalar or a vector.

  • If you are adding only one receiver, RequiredEbNo is a scalar.

  • If you are adding multiple receivers, RequiredEbNo is a scalar or a vector. When RequiredEbNo is a scalar, the same RequiredEbNo is assigned to all receivers. When RequiredEbNo is a vector, its length must equal the number of receivers and each element of RequiredEbNo is assigned to the corresponding receiver in the parent.

When the AutoSimulate property of the satellite scenario is false, the RequiredEbNo property can be modified while SimulationStatus is NotStarted or InProgress.

Output Arguments

collapse all

Receivers attached to parent, returned as a row vector.

Version History

Introduced in R2021a

expand all