Main Content

UWB Channel Models

This example shows how to implement UWB channel models for a variety of propagation environments. The implementation is based on recommendations from the channel modeling subgroup of IEEE® 802.15.4a™ [ 1 ]. You can reuse these UWB channel models for the IEEE 802.15.4z amendment [ 3 ], which enhances the HRP PHY introduced by IEEE 802.15.4a.


The recommended UWB channel models comprise the following parts:

  1. Application of distance- and frequency-dependent path loss

  2. A modified Saleh-Valenzuela model [ 4 ], which contains multipath components that are grouped in distinct clusters

  3. Determination of path amplitudes with distinct Nakagami distributions (small-scale fading)

  4. Environment-specific parameterization of the above steps

The example sequentially illustrates each component of the UWB channel model. In Environment Comparison an aggregate uwbChannel object is used to implement all aspects of the UWB channel model with a single command.

Environment Parameterization

The IEEE 802.15.4a channel modeling subgroup recommends multiple UWB models for the 2 to 10 GHz range, which cover a wide range of environments:

  • Residential (indoor)

  • Indoor office

  • Outdoor (suburban-like)

  • Open outdoor (agricultural)

  • Industrial (indoor)

The subgroup recommends two distinct models for each environment type (except for open outdoor), depending on the presence or absence of a line-of-sight (LOS) component. Thus, this example implements a total of nine combinations (type x LOS) for the 2 to 10 GHz range.

To create a channel-model parameterization for a specific scenario, construct a uwbChannelModel object accordingly.

environmentType = "Indoor office";
LOS             = true;
env = uwbChannelConfig(environmentType, LOS)
env = 
  uwbChannelConfig with properties:

                          Type: 'Indoor office'
                        HasLOS: 1
             ReferencePathLoss: 35.4000
              PathLossExponent: 1.6300
            ShadowingDeviation: 1.9000
                   AntennaLoss: 3
             FrequencyExponent: 0.0300
            AverageNumClusters: 5.4000
            ClusterArrivalRate: 0.0160
              PathArrivalRate1: 0.1900
              PathArrivalRate2: 2.9700
            MixtureProbability: 0.0184
    ClusterEnergyDecayConstant: 14.6000
                PathDecaySlope: 0
               PathDecayOffset: 6.4000
            NakagamiMeanOffset: 0.4200
             NakagamiMeanSlope: 0
       NakagamiDeviationOffset: 0.3100
        NakagamiDeviationSlope: 0

You can create custom environment scenarios by modifying the configuration presets above.

Propagation and Path Loss

The received signal experiences path loss and suffers a reduction in power. The model in [ 1 ] recommends that path loss PL depends on the distance d between the transmitter and the receiver, and also that path loss manifests nonuniformly for the different frequencies f of the received signal.


Distance and frequency affect path loss in a manner specific to each environment type.

Transmitted Signal

First, create a transmitted signal that experiences path loss. Here, an IEEE 802.15.4a/z signal is created, but the example can also be used with signals of different types.

Ptx = 1; % Transmit power, in Watts

% Create IEEE 802.15.4a/z signal:
psduLen = 10;  % bytes
psdu = randi([0, 1], psduLen*8, 1);
cfgBPRF = lrwpanHRPConfig(Mode='BPRF', ...
             STSPacketConfiguration=0, ...
             PHRDataRate=6.81, ...      % PHR at 6.81 Mbps (BPRF payload always at 6.81 Mbps)
             CodeIndex=9, ...                 % One of the 127-symbols long SYNC codes
             PreambleDuration=16, ...
waveBPRF = lrwpanWaveformGenerator(psdu, cfgBPRF);

waveBPRF = waveBPRF*sqrt(Ptx)/(sqrt(mean(waveBPRF.^2)));

Distance Dependence

Establish the path loss dependence on distance with the classic log-distance propagation model. A path loss exponent n (PathLossExponent in uwbChannelConfig, specific to environment) determines how quickly power dissipates as a function of distance d. A zero-mean Gaussian random variable models shadowing (as seen in large-scale fading, denoted by S).


PL0 is the reference path loss at the reference distance d0 (1 m).

d = 10; % distance between transmitter and receiver, in meters
rxSignal = helperDistancePathLoss(waveBPRF, env.ReferencePathLoss, d, env.PathLossExponent, env.ShadowingDeviation);

Frequency Dependence

Model frequency dependence by amplifying frequencies smaller than the center frequency fc and reducing the power of higher frequencies. The power differences within the same bandwidth decrease with the center frequency fc. A path loss exponent κ (FrequencyExponent in uwbChannelConfig, specific to environment) determines how quickly power is lost as a function of frequency.


To apply frequency-dependent path loss, select an IEEE 802.15.4a/z channel number, to determine the center frequency fcand the channel bandwidth (see Table 15-11 in [ 2 ]).

channelSpec = [0 499.2e6 499.2e6];
channelNum = channelSpec(1);
Fc = channelSpec(2);
bw = channelSpec(3);
fprintf('Channel #%d: Center frequency = %.1f MHz, Bandwidth = %.1f MHz.\n', channelNum, Fc/1e6, bw/1e6);
Channel #0: Center frequency = 499.2 MHz, Bandwidth = 499.2 MHz.

Next, create an arbitrary-magnitude filter to enable the frequency-dependent profile described above.

rxSignal = helperFrequencyPathLoss(rxSignal, Fc, bw, env.FrequencyExponent);

Antenna Effects

Finally, the recommended model describes two antenna-related effects. First, the presence of people close to antennas is modeled as a static "antenna attenuation factor". Second, the environment parameterization contains an "antenna loss" factor (AntennaLoss in uwbChannelConfig), which presumably models the overall effect of both the transmit and receive antennas.

rxSignal = rxSignal/2;                            % presence of people ("antenna attenuation factor"), see Section II.B.4 in [1]
rxSignal = rxSignal * 10^(-env.AntennaLoss/20);   % apply antenna loss (convert from dB to V)

Power Delay Profile

The recommended UWB channel model is based on the Saleh-Valenzuela model [ 4 ] and contains multipath components that are grouped into L clusters.


The amplitude, phase and delay of the kth path in the lth cluster are denoted by ak,l, φk,l and τk,l respectively.


  • Number of clusters: The number of clusters (L) follows a Poisson distribution, and its average number is environment-specific.

  • Cluster arrival times: Each of these clusters has an arrival time Tl, which is determined by a Poisson process that has a (cluster) arrival rate Λ. The interarrival times in a Poisson process are exponentially distributed and their mean is 1/Λ (where Λ is ClusterArrivalRate in uwbChannelConfig). Exponential random variables can be created from a uniform random variable, with the Inverse Transform Method.

One exception is the case for non-line-of-sight indoor office and industrial environments, where a dense and continuous arrival of multipath components is observed, so this case uses a single cluster with regular tap spacings.

  • Cluster energies: The mean (averaged over small-scale fading) energy Ωl for each cluster l decays exponentially with the cluster arrival time Tl. The exponential decay factor Γ (ClusterEnergyDecayConstant in uwbChannelConfig) is also environment-specific.


A normal random variable Mcluster (ClusterShadowingDeviation in uwbChannelConfig) is added to the mean cluster energy, for certain environments, to represent "cluster shadowing".

[L, clusterArrivalTimes, clusterEnergies] = helperClusterization(environmentType, LOS, env.AverageNumClusters, env.ClusterArrivalRate, env.ClusterShadowingDeviation, env.ClusterEnergyDecayConstant);

fprintf(['UWB channel has %d clusters.\n' ...
         'Cluster arrival times (in ns): %s\n', ...
         'Cluster energies: %s\n'], L,  mat2str(clusterArrivalTimes), mat2str(clusterEnergies));
UWB channel has 9 clusters.
Cluster arrival times (in ns): [182.480961732126 222.066873390902 237.662472351032 241.929184951106 369.488095088147 404.749645305753 452.01964117194 728.959827816783 796.916608121109]
Cluster energies: [3.73151586385388e-06 2.47944768983767e-07 8.52010967200756e-08 6.36101925043102e-08 1.02125498634872e-11 9.1250900081162e-13 3.58207380049055e-14 2.07117631906428e-22 1.97133880523251e-24]

Path Modeling

  • Path arrivals: For most environments, paths arrive within each cluster according to the mixture of two separate Poisson processes. For the environments where a dense continuous arrival of multipath components is observed (such as industrial environments), paths are modeled with regular tap spacings.

  • Average path power: For most environments, the average path power ak,l of the kth path in the lth cluster decays exponentially within the cluster, as a function of the path delay τk,l:


γl is the intra-cluster decay constant and λ1, λ2, β regulate the mixed path-arrival Poisson process (PathArrivalRate1, PathArrivalRate2 and MixtureProbability in uwbChannelConfig, respectively).

However, for the non-line-of-sight indoor office and industrial environments, the power delay profile (PDP) increases up to a maximum and then decays:


Here, χ (FirstPathAttenuation in uwbChannelConfig) describes the attenuation of the first component and γrise, γ1 (PDPIncreaseFactor, PDPDecayFactor in uwbChannelConfig) determine how quickly the PDP increases to its maximum and decays, respectively.

  • Path phases: Each path is characterized by a phase φk,l, which is modeled as a uniform random variable within [0 2π]. The phase rotates the path gain in the complex plane, thus the channel impulse response is complex.

Finally, each cluster contains a certain number of paths (K), but this number is not specified in the model report [ 1 ]. The implementation provided within the report [ 1 ] considers all paths arriving within a duration 10*γ, where γ is the intra-cluster power decay factor. This example considers all paths whose power is no less than a certain configurable threshold (e.g., 0.5%) of the first path.

Tend = 0.5/100;   % Power threshold (%), compared to 1st path, determining end of clusters
[pathArrivalTimes, pathAveragePowers, pathPhases] = helperPathModeling(env, clusterArrivalTimes, clusterEnergies, Tend, cfgBPRF.SampleRate);

Small-Scale Fading

  • Nakagami parameters: Now that the average power has been determined for each path, the next step is to enable small-scale fading by determining the different channel realizations according to a Nakagami distribution. The channel model recommends that the shape parameter m of the Nakagami distribution is a lognormal random variable, whose mean and variance are dependent on the environment and the path delay.

nakagamiM = helperNakagamiParameters(env, pathArrivalTimes);
  • Nakagami random variables: You can obtain a Nakagami random variable with shape parameter m and spread parameter Ω (the average path gain) from the square root of a gamma-distributed random variable that has shape parameter k = m and scale parameter θ = Ω/m [ 5 ]. This example generates a gamma-distributed random variable with a sequence of steps, including the Ahrens-Dieter method [ 6 ]. The Nakagami random variables are created within the helperSingleChannelRealization function.

  • Simulation: Small-scale (Nakagami) fading is applied throughout the input signal. The timescale of fading is determined by the following 2 inputs:

sampleDensity   = 100000;
maxDopplerShift = 5; % in Hz

New path gains are generated with a rate equal to maxDopplerShift x 2 x sampleDensity. All the channel realizations occur within helperAllChannelRealizations, and its pathGains output contains all channel realizations.

[rxSignal, pathGains] = helperApplyChannel(rxSignal, clusterArrivalTimes, ...
  pathArrivalTimes, pathAveragePowers, pathPhases, nakagamiM, cfgBPRF.SampleRate, sampleDensity, maxDopplerShift);

helperVisualizeChannelGains(clusterArrivalTimes, pathArrivalTimes, pathGains);

Comparing the scatter plots of the UWB channel input and output demonstrates the effects of the multipath channel.


Figure Scatter Plot contains an axes object. The axes object with title Scatter plot, xlabel In-Phase, ylabel Quadrature contains a line object which displays its values using only markers. This object represents Channel 1.

The IEEE 802.15.4a/z signal contains ternary symbols at -1, 0, and 1. Other constellation points are the result of pulse (Butterworth) filtering and frequency-dependent path loss.


Figure Scatter Plot contains an axes object. The axes object with title Scatter plot, xlabel In-Phase, ylabel Quadrature contains a line object which displays its values using only markers. This object represents Channel 1.

The multipath channel introduces complex "noise" as a result of the complex path gains and inter-symbol interference.

Environment Comparison

You can generate the channel gains for different environments, to illustrate key differences in their power delay profiles. Towards this end, use the uwbChannel System object™, which encapsulates all prior components of the UWB channel model, in a single utility.

  • Alternate PDP: First, the industrial NLOS environment differs in that it consists of a single cluster with regular tap spacings. The PDP shape first increases and then decays.

Here, we use a variant of uwbChannel that only generates the path gains and does not filter the transmitted signal. The default behavior of uwbChannel is to filter the transmitted signal and output the received one.

industrialUWBChannel = uwbChannel('Industrial', false, ...
    TransmitPower = 1, ...
    Distance = 10, ...
    ChannelNumber = 0, ...
    LastPathThreshold = 0.05, ...
    SampleRate = 499.2*10*1e6, ...
    SampleDensity = 1e5, ...
    MaxDopplerShift = 5, ...

% waveTx = lrwpanWaveformGenerator(psdu, cfgBPRF); % start with a clean signal
% [waveRx, pathGains] = industrialUWBChannel(waveTx); % pass Tx signal through the wireless channel, with ChannelFiltering = true (default)
pathGains = industrialUWBChannel();                   % only obtain channel realization

s = info(industrialUWBChannel);
helperVisualizeChannelGains(s.ClusterArrivalTimes, s.PathArrivalTimes, pathGains);

  • Outdoor environments: The outdoor UWB environment differs in that its average number of clusters is typically substantially higher.

outdoorUWBChannel = uwbChannel('Outdoor', false, ChannelFiltering=false);
pathGains = outdoorUWBChannel();                      % only obtain channel realization

s = info(outdoorUWBChannel);
helperVisualizeChannelGains(s.ClusterArrivalTimes, s.PathArrivalTimes, pathGains);

Further Exploration

To further explore this example, you can modify the environment type and the LOS setting. You can give different values for the transmitted power, the distance between the two link endpoints, the channel number, and the ratio threshold comparing the powers of the first and the last path within a cluster.

You can also explore the implementation of the channel configuration and channel filtering objects as well as the helper functions that implement different components of the UWB channel model:


1. A. F. Molisch et al., “IEEE 802.15.4a Channel Model-Final Report,” Tech. Rep., Document IEEE 802.1504-0062-02-004a, 2005.

2. "IEEE Standard for Low-Rate Wireless Networks," in IEEE Std 802.15.4-2020 (Revision of IEEE Std 802.15.4-2015), pp.1–800, 23 July 2020, DOI: 10.1109/IEEESTD.2020.9144691.

3. "IEEE Standard for Low-Rate Wireless Networks--Amendment 1: Enhanced Ultra Wideband (UWB) Physical Layers (PHYs) and Associated Ranging Techniques," in IEEE Std 802.15.4z-2020 (Amendment to IEEE Std 802.15.4-2020), pp.1–174, 25 August 2020, DOI: 10.1109/IEEESTD.2020.9179124.

4. A. Saleh and R. A. Valenzuela, “A statistical model for indoor multipath propagation,” IEEE J. Selected Areas Comm., Vol. 5, pp. 138–137, February 1987.



Related Topics