Contenuto principale

satelliteLargeScaleChannel

R2026b

Calculate satellite large-scale channel losses

Since R2026b

    Description

    channelInfo = satelliteLargeScaleChannel(cfg,stationPos,satPos) calculates the large-scale channel information channelInfo for the specified configuration cfg, ground station position stationPos, and satellite position satPos.

    The total large scale attenuation accounts for these losses.

    • Path loss, which includes free space path loss, shadow fading, and clutter loss.

    • Outdoor-to-indoor building entry loss

    • Atmospheric absorption

    • Rain and cloud attenuation

    • Scintillation, which includes tropospheric and ionospheric scintillation

    Note

    When you set the EnableAtmosphericLoss property of cfg to true, this function requires a MAT file with digital maps from International Telecommunication Union (ITU) documents. If the MAT file is not available on the path, download and uncompress the data file from https://www.mathworks.com/supportfiles/spc/P618/ITURP618v14DigitalMaps.tar.gz to a location on the MATLAB® path.

    Alternatively, the Compute Large‑Scale Satellite Channel Losses with Atmospheric Attenuation example includes commands to download, extract, and add the MAT file to the path automatically.

    example

    [signalOut,channelInfo] = satelliteLargeScaleChannel(cfg,stationPos,satPos,signalIn) also applies the total large-scale channel attenuation to the input signal signalIn and returns the attenuated signal signalOut.

    example

    Examples

    collapse all

    Create a configuration object with a Ka-band carrier frequency (greater than 6GHz), a dense urban environment, and outdoor-to-indoor building entry loss enabled for a thermally efficient building.

    cfg = satelliteLargeScaleChannelConfig( ...
        CarrierFrequency=20e9, ...
        Environment="Denseurban", ...
        EnableO2ILoss=true, ...
        BuildingType="Thermally-Efficient", ...
        O2ILossProbability=0.3)
    cfg = 
      satelliteLargeScaleChannelConfig with properties:
    
             CarrierFrequency: 2.0000e+10
               LOSProbability: []
             ShadowFadingLoss: []
                  ClutterLoss: []
                  Environment: "Denseurban"
                EnableO2ILoss: 1
                 BuildingType: "Thermally-Efficient"
           O2ILossProbability: 0.3000
        EnableAtmosphericLoss: 0
    
    

    Define a ground station position in geodetic coordinates as [latitude; longitude; altitude], with latitude and longitude in degrees and altitude in meters.

    stationPos = [48.8566; 2.3522; 30]; 

    Define the satellite position in ECEF coordinates, in meters, as [x; y; z].

    satPos = [15600e3; 7540e3; 20200e3];

    Calculate satellite large-scale channel losses.

    channelInfo = satelliteLargeScaleChannel(cfg,stationPos,satPos)
    channelInfo = struct with fields:
         TotalAttenuation: 300.5375
        FreeSpacePathLoss: 204.7211
         ShadowFadingLoss: 18.6850
              ClutterLoss: 33.3000
           HasLineOfSight: 0
                  SigmaSF: 12.1000
    
    

    Generate a signal, apply satellite large-scale channel attenuation, and compare the input and output signal power.

    Create a satellite large-scale channel configuration object for a suburban environment.

    cfg = satelliteLargeScaleChannelConfig( ...
        CarrierFrequency=2e9, ...
        Environment="Suburban");

    Generate a random QPSK-modulated signal.

    m = 4;                                % Modulation order
    data = randi([0 m-1],1000,1);         % Random data symbols
    signalIn = pskmod(data,m,pi/m);       % QPSK-modulate data symbols

    Define the ground station and satellite positions.

    stationPos = [51.5074; -0.1278; 50];     % Station at 50 m altitude
    satPos = [15000e3; 5000e3; 21000e3];     % Satellite in ECEF (meters)

    Apply the satellite large-scale channel losses to the signal.

    [signalOut,channelInfo] = satelliteLargeScaleChannel(cfg,stationPos,satPos,signalIn);

    Compare the input and output signal power.

    inputPower = 10*log10(mean(abs(signalIn).^2));
    outputPower = 10*log10(mean(abs(signalOut).^2));

    Display the values of the comparison.

    fprintf("Input power:  %.2f dBW\n",inputPower)
    Input power:  0.00 dBW
    
    fprintf("Output power: %.2f dBW\n",outputPower)
    Output power: -183.98 dBW
    
    fprintf("Total attenuation: %.2f dB\n",channelInfo.TotalAttenuation)
    Total attenuation: 183.98 dB
    

    Create a configuration object with direct LOS, and enable atmospheric losses. Since the configuration has direct LOS, set clutter loss to zero.

    cfg = satelliteLargeScaleChannelConfig(CarrierFrequency=30e9, ...
                  LOSProbability=1,ShadowFadingLoss=0.2, ...
                  ClutterLoss=0,EnableAtmosphericLoss=1, ...
                  Time=datetime);

    To compute atmospheric losses, the configuration object requires a MAT file with digital maps from International Telecommunication Union (ITU) documents. Check if the MAT file is available on the path, and, if it is not, download and extract it.

    matFile = exist("iturp618v14Maps.mat','file");
    if ~matFile
        if ~exist("ITURP618v14DigitalMaps.tar.gz","file")
            url = "https://www.mathworks.com/supportfiles/spc/P618/ITURP618v14DigitalMaps.tar.gz";
            websave("ITURP618v14DigitalMaps.tar.gz",url)
            untar("ITURP618v14DigitalMaps.tar.gz")
        else
            untar("ITURP618v14DigitalMaps.tar.gz")
        end
        addpath(cd)
    end

    Define a ground station position in geodetic coordinates as [latitude; longitude; altitude], with latitude and longitude in degrees and altitude in meters.

    stationPos = [40; -74; 10];

    Define the satellite position in ECEF coordinates, in meters, as [x; y; z].

    satPos = [15000e3; 5000e3; 21000e3];

    Calculate satellite large-scale channel losses.

    channelInfo = satelliteLargeScaleChannel(cfg,stationPos,satPos)
    channelInfo = struct with fields:
         TotalAttenuation: 219.1725
        FreeSpacePathLoss: 209.5222
         ShadowFadingLoss: 0.2000
              ClutterLoss: 0
           HasLineOfSight: 1
                  SigmaSF: []
    
    

    Input Arguments

    collapse all

    Satellite large-scale channel configuration, specified as a satelliteLargeScaleChannelConfig object.

    Ground station position in geodetic coordinates, specified as a 3-by-1 vector of the form [latitude; longitude; altitude].

    Latitude, in degrees, is in the range [–90, 90]. A positive value corresponds to a North latitude, and a negative value corresponds to a South latitude. Longitude, in degrees, is in the range [–180, 180]. A positive value corresponds to East longitude, and a negative value corresponds to West longitude. Altitude, in meters, is in the range [0, 10,000].

    Data Types: double

    Satellite position in Earth-centered Earth-fixed (ECEF) coordinates in meters, specified as a 3-by-1 vector of the form [x; y; z].

    Data Types: double

    Input signal, specified as a vector or matrix. The function attenuates the input signal by the total large-scale channel loss.

    Data Types: double
    Complex Number Support: Yes

    Output Arguments

    collapse all

    Channel loss information, returned as a structure containing these fields.

    • TotalAttenuation — Total large-scale channel attenuation in dB, returned as data type double. For more details, see 3GPP TR 38.811 section 6.6.

    • FreeSpacePathLoss — Free-space path loss in dB, returned as data type double. For more details, see 3GPP TR 38.811 section 6.6.2.

    • ShadowFadingLoss — Shadow fading loss in dB, returned as data type double. For more details, see 3GPP TR 38.811 section 6.6.2.

    • ClutterLoss — Clutter loss in dB, returned as data type double. For more details, see 3GPP TR 38.811 section 6.6.2.

    • HasLineOfSight — Line-of-sight status, returned as data type logical. For more details, see 3GPP TR 38.811 section 6.6.1.

    • SigmaSF — Shadow fading standard deviation in dB, returned as data type double. For more details, see 3GPP TR 38.811 table 6.6.2-1, 6.6.2-2, and 6.6.2-3.

    Output signal, returned as a vector or matrix with the same dimensions and data type as the input signal signalIn. The output signal is the input signal attenuated by the total large-scale channel loss, as denoted by this expression.

    signalOut = signalIn./db2mag(channelInfo.TotalAttenuation)

    Data Types: double | single
    Complex Number Support: Yes

    References

    [1] 3rd Generation Partnership Project (3GPP). Study on New Radio (NR) to Support Non-Terrestrial Networks. 3GPP TR 38.811 Release 15. 3GPP.

    [2] International Telecommunication Union (ITU). P Series: Radiowave Propagation; Prediction of Building Entry Loss. ITU-R Recommendation P.2109-2. ITU, August, 2023.

    Extended Capabilities

    expand all

    Version History

    Introduced in R2026b