Main Content

uwbChannel

Filter input signal through UWB IEEE 802.15.4 a/z/ab channel

Since R2024a

Description

The uwbChannel System object™ filters an input signal through a UWB IEEE® 802.15.4™ a/z/ab channel as described by [1]. For more information, see the Algorithms section.

To filter an input signal through a UWB channel:

  1. Create the uwbChannel object and set its properties.

  2. Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects?

Creation

Description

uwbchan = uwbChannel creates a UWB fading channel System object.

uwbchan = uwbChannel(type,los) sets the Environment property to the value in type and the HasLOS property to the value in los.

example

uwbchan = uwbChannel(___,Name=Value) creates a UWB fading channel System object using any of the previous syntaxes and sets properties using one or more name-value arguments. For example, uwbChannel(SampleRate=2) sets the input signal sample rate to 2.

Properties

expand all

Unless otherwise indicated, properties are nontunable, which means you cannot change their values after calling the object. Objects lock when you call them, and the release function unlocks them.

If a property is tunable, you can change its value at any time.

For more information on changing property values, see System Design in MATLAB Using System Objects.

Environment type, specified as 'Residential', 'Indoor office', 'Outdoor', 'Open outdoor', or 'Industrial'.

This property determines lower level configuration settings and the mode of operation for the UWB Channel.

Presence of the line-of-sight component, specified as 1 (true) or 0 (false).

  • When set to true, there is a line-of-sight component between the transmitter and the receiver.

  • When you set Environment to 'Open outdoor', this property cannot be set to false.

Data Types: logical

Minimum power of paths in cluster, specified as a percentage in the range (0, 100] relative to first path of the cluster. The object excludes path values below this threshold from calculations.

Normalize path gains, specified as one of these logical values:

  • 1 (true) — The fading processes are normalized so that the total power of the path gains, averaged over time, is 0 dB.

  • 0 (false) — The total power of the path gains is not normalized.

Data Types: logical

Channel visualization, specified as 'Off' or 'Impulse response'. To display a separate window showing the channel impulse response (CIR), set this property to 'Impulse response'. The object uses the dsp.ArrayPlot System object to display the path gains, with a different color for each cluster.

UWB channel number, specified as an integer in the range [0, 15]. This property determines the channel bandwidth and center frequency.

Distance in meters between transmitter and receiver, specified as a positive scalar.

Tunable: Yes

Maximum Doppler shift in hertz for all channel paths, specified as a nonnegative scalar. The Doppler shift applies to all the paths of the channel. When you set this property to 0, the channel remains static for the entire input. The coefficient generation sampling rate is Fcg = MaxDopplerShift × 2 × SampleDensity.

Tunable: Yes

Number of time samples of filter coefficient generation per half wavelength, specified as a nonnegative scalar. The coefficient generation sampling rate is Fcg = MaxDopplerShift × 2 × SampleDensity. Setting this property to Inf sets Fcg = SampleRate.

Tunable: Yes

Input signal sample rate in hertz, specified as a positive scalar. The default value of this property is assigns the sample rate value for 802.15.4z with oversampling rate set to 4. Specifically, 499.2 × 4 MHz.

Source of the random number stream, specified as 'Global stream' or 'mt19937ar with seed'.

  • When you specify 'Global stream', the object uses the current global random number stream for random number generation. In this case, the reset object function resets only the filters.

  • When you specify 'mt19937ar with seed', the object uses the mt19937ar algorithm for random number generation. In this case, the reset object function resets the filters and reinitializes the random number stream to the value of the Seed property.

Data Types: char | string

Initial seed of the mt19937ar random number stream, specified as a nonnegative integer. When you call the reset object function, it reinitializes the mt19937ar random number stream to the Seed value.

Dependencies

To enable this property, set the RandomStream property to 'mt19937ar with seed'.

Data Types: double

Usage

Description

example

Y = uwbchan(X) filters the input signal X through a multipath Nakagami fading channel and returns the result in Y.

Input Arguments

expand all

Input signal, specified as a scalar, an NS-element column vector. NS is the number of samples.

This object accepts variable-size inputs. After the object is locked, you can change the size of each input channel, but you cannot change the number of channels. For more information, see Variable-Size Signal Support with System Objects.

Data Types: single | double
Complex Number Support: Yes

Output Arguments

expand all

Output signal, returned as an NS-element column vector wit the same data type as X. NS is the number of samples.

Object Functions

To use an object function, specify the System object as the first input argument. For example, to release system resources of a System object named obj, use this syntax:

release(obj)

expand all

infoCharacteristic information about UWB fading channel object
stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object

Examples

collapse all

Pass an 802.15.4z™ High Pulse Repetition Frequency (HPRF) signal through an outdoor multipath UWB channel.

Create a UWB waveform from random packet data.

    psdu = randi([0, 1],300,1);
    waveTx = lrwpanWaveformGenerator(psdu,lrwpanHRPConfig);
    

Create a UWB channel object for an outdoor environment with no line of sight. Display the object configuration.

    outdoorUWBChannel = uwbChannel('Outdoor', ...
        HasLOS=false, ...
        Visualization='Impulse response')
outdoorUWBChannel = 
  uwbChannel with properties:

   Delay Profile
             Environment: 'Outdoor'
                  HasLOS: false
              SampleRate: 1.9968e+09
         MaxDopplerShift: 5
           SampleDensity: 64
    MinRelativePathPower: 5
      NormalizePathGains: true
           Visualization: 'Impulse response'

   Propagation
           ChannelNumber: 0
                Distance: 10

   Realization
            RandomStream: 'Global stream'

Pass the LR-WPAN waveform through the channel and observe the impulse response.

    waveRx = outdoorUWBChannel(waveTx);

After passing a waveform through the channel, display characteristic information about the channel. Observe that the NumClusters value matches the number of clusters plotted in the impulse response.

    info(outdoorUWBChannel)
ans = struct with fields:
    EnvironmentParameterization: [1x1 struct]
                CenterFrequency: 499200000
                      Bandwidth: 499200000
                    NumClusters: 5
            ClusterArrivalTimes: [8.2597 16.5497 29.9292 108.0369 125.1609]
                ClusterEnergies: [0.9241 0.8538 0.7514 0.3563 0.3026]
               PathArrivalTimes: {1x5 cell}
       AbsolutePathArrivalTimes: {1x5 cell}
              PathAveragePowers: {1x5 cell}
                     PathPhases: {1x5 cell}
               NakagamiMFactors: {1x5 cell}
                   PathGainRate: [640]
           FrequencyFilterDelay: [25]
             ChannelFilterDelay: [0]
      ChannelFilterCoefficients: [152x312 double]

Pass an 802. 15.4z™ High Pulse Repetition Frequency (HPRF) signal through an industrial (single-cluster, continuous) multipath UWB channel.

Create a UWB waveform from random packet data.

psdu = randi([0,1],300,1);
waveTx = lrwpanWaveformGenerator(psdu,lrwpanHRPConfig);

Create a UWB channel object for an industrial environment with line of sight. Display the object configuration.

industrialUWBChannel = uwbChannel('Industrial', ...
    HasLOS=false, ...
    Visualization='Impulse response')
industrialUWBChannel = 
  uwbChannel with properties:

   Delay Profile
             Environment: 'Industrial'
                  HasLOS: false
              SampleRate: 1.9968e+09
         MaxDopplerShift: 5
           SampleDensity: 64
    MinRelativePathPower: 5
      NormalizePathGains: true
           Visualization: 'Impulse response'

   Propagation
           ChannelNumber: 0
                Distance: 10

   Realization
            RandomStream: 'Global stream'

Pass the UWB waveform through the channel and observe the impulse response. The industrial (and indoor office) environment case with no line of sight models a single cluster with regular tap spacings. Other case model a randomized number of clusters and path arrivals.

waveRx = industrialUWBChannel(waveTx);

Equalize an 802.15.4z™ High Pulse Repetition Frequency (HPRF) signal that has passed through a UWB multipath channel.

Store the random number generator state. Create a UWB waveform from random packet data. Create a preamble by using the characteristic information about the waveform.

origState = rng(17);
msg = randi([0,1],1000,1);
cfgHPRF = lrwpanHRPConfig(Mode='HPRF',PSDULength=length(msg));
[waveHPRF,symbolsHPRF] = lrwpanWaveformGenerator(msg,cfgHPRF);
s = info(cfgHPRF);
singlePreambleLen = s.PreambleSpreadingFactor ...
    * s.PreambleCodeLength * cfgHPRF.SamplesPerPulse;
preambleDownSampled = waveHPRF( ...
    1:cfgHPRF.SamplesPerPulse: ...
    singlePreambleLen*cfgHPRF.PreambleDuration);

Create a UWB channel object for an industrial environment with line of sight. Pass the LR-WPAN waveform through the multipath channel and observe the impulse response.

los = true;
chanUWB = uwbChannel( ...
    'Residential',los, ...
    SampleRate=cfgHPRF.SampleRate, ...
    SampleDensity=64, ...
    Visualization="Impulse response");
mpathHPRF = chanUWB(waveHPRF);

After passing a waveform through the channel, but before applying AGC and equalization, display the scatter plot.

f = scatterplot(mpathHPRF);
f.Name = 'Multipath signal';

Apply AGC by scaling the received signal. Apply linear equalization to the signal by using a comm.LinearEqualizer object configured to use the least mean square algorithm.

constelScale = max(abs(preambleDownSampled));
mpathHPRF = mpathHPRF * constelScale * 1/max(abs(mpathHPRF));
lmsEq = comm.LinearEqualizer( ...
    Algorithm="LMS", ...
    Constellation=[-1 0 1]*constelScale, ...
    InputSamplesPerSymbol=cfgHPRF.SamplesPerPulse, ...
    NumTaps=200, ...
    ReferenceTap=40, ...
    StepSize = 0.1);
eqLatency = info(lmsEq).Latency;
[eqHPRF,errLMS,w] = lmsEq( ...
    [mpathHPRF; zeros(eqLatency*cfgHPRF.SamplesPerPulse,1)], ...
    preambleDownSampled);

After applying AGC and equalization, display the scatter plot.

f = scatterplot( ...
    eqHPRF(cfgHPRF.PreambleDuration*singlePreambleLen+4:end));
f.Name = 'Equalized';

Restore the state of the global stream.

rng(origState);

Algorithms

The uwbChannel System object enables modeling of UWB channel environments described in [1]. The capabilities implemented include:

  1. Environment-specific parameterization of the steps that follow.

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

  3. Modified Saleh-Valenzuela model [2] that implements these cases:

    • A single cluster case with regular path spacings. This case applies when there is no line of sight and industrial or indoor office environment.

    • A general case with random number of clusters and path arrivals. Multipath components are grouped in distinct clusters.

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

For a detailed algorithmic description of channeling modeling capabilities available when you use the uwbChannelSystem object, see the UWB Channel Models example.

References

[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] 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.

Extended Capabilities

Version History

Introduced in R2024a