Main Content

Receiver

Receiver object belonging to satellite scenario

    Description

    The Receiver object defines a receiver object function belonging to the satellite scenario.

    Creation

    You can create Receiver object using the receiver object function of the Satellite, GroundStation, or Gimbal object.

    Properties

    expand all

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

    Receiver 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 Receiver is added, specify Name as a string scalar or a character vector.

    • If multiple Receivers are added, specify Name as a string scalar, character vector, string vector or a cell array of character vectors. All Receivers 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 Receivers being added. Each Receiver is assigned the corresponding name from the vector or cell array.

    In the default value, idx is the ID of the Receivers added by the Receiver object function.

    Data Types: char | string

    This property is set internally by the simulator and is read-only.

    Receiver ID assigned by the simulator, specified as a positive scalar.

    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 Receiver — MountingLocation is a three-element vector.

    • Multiple Receivers — MountingLocation can be a three-element vector or a matrix. When specified as a vector, the same MountingLocations 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 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 Receiver — MountingAngles is a three-element vector.

    • Multiple Receivers — MountingAngles can be a three-element vector or a matrix. When specified as a vector, the same MountingAngless 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 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 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 m and an aperture efficiency of 0.65.

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

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

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

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

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

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

    • If multiple Receivers are added, specify SystemLoss as 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 Receiver and each element of SystemLoss is assigned to the corresponding Receiver specified.

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

    Gain to noise temperature ratio of the antenna in dB/K, specified as the name-value pair consisting of 'GainToNoiseTemperatureRatio' and a scalar or a vector.

    • If only one Receiver is added, specify GainToNoiseTemperatureRatio as a scalar.

    • If multiple Receivers are added, specify GainToNoiseTemperatureRatio as 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 specified.

    When AutoSimulate property of the satellite scenario is false, you can modify the GainToNoiseTemperatureRatio value while the 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 only one Receiver is added, specify RequiredEbNo as a scalar.

    • If multiple Receivers are added, specify RequiredEbNo as 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 specified.

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

    Note

    The above properties except ID can be specified as name-value arguments in receiver. The size of specified name-value pairs determines the number of receivers specified. Refer to these properties to understand how they must be defined when specifying multiple receivers.

    Object Functions

    aerCalculate azimuth angle, elevation angle, and range of another satellite or ground station in NED frame
    gaussianAntennaAdd Gaussian antennas
    patternPlot 3-D radiation pattern of antenna
    pointAtSpecify the target at which the satellite is pointed

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

    Version History

    Introduced in R2021a