Main Content

etsiRicianChannel

Filter input signal through multipath ETSI frequency-flat Rician fading channel

Since R2021a

Description

The etsiRicianChannel System object™ filters an input signal through a multipath European Telecommunication Standards Institute (ETSI) frequency-flat Rician fading channel. For more information on the etsiRicianChannel fading model, see Channel Model Block Diagram.

To filter an input signal using a multipath ETSI Rician fading channel:

  1. Create the etsiRicianChannel 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

chan = etsiRicianChannel creates a multipath ETSI frequency-flat Rician fading channel System object. This object filters a real or complex input signal through the multipath channel to obtain the channel-impaired signal.

example

chan = etsiRicianChannel(Name,Value) sets properties using one or more name-value pairs. Enclose each property name in quotes. For example, etsiRicianChannel("SampleRate",2) sets the input signal sample rate to 2.

example

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.

Input signal sample rate in Hz, specified as a positive scalar.

Data Types: double

Rician K-factor in dB, specified as a nonnegative nonzero scalar.

KFactor is the ratio of direct signal power to the total multipath power. For details, see Channel Model Block Diagram.

Data Types: double

Maximum Doppler shift for the channel path, specified as a nonnegative scalar. Units are in hertz.

When you set this property to 0, the channel remains static for the entire input. You can use the reset object function to generate a new channel realization. The MaximumDopplerShift property value must be smaller than SampleRate/10.

Data Types: double

Number of sinusoids used to model the fading process, specified as a positive integer.

Data Types: double

Source of random number stream, specified as one of these options.

  • "Global stream" — The current global random number stream is used for normally distributed random number generation. In this case, the reset object function resets the channel filters only.

  • "mt19937ar with seed" — The mt19937ar algorithm is used for normally distributed random number generation. In this case, the reset object function resets the channel 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 generator algorithm, specified as a nonnegative integer.

Dependencies

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

Data Types: double

Channel visualization, specified as "Off", "Impulse response", "Frequency response", "Impulse and frequency responses", or "Doppler spectrum".

When you set this property to "Doppler spectrum", the values plotted are in dB.

For more information, see Channel Visualization.

Data Types: char | string

Usage

Description

y = chan(x) filters input signal x through a multipath ETSI frequency-flat Rician fading channel and returns the output signal in y.

[y,pathgains] = chan(x) returns the channel path gains of the underlying multipath ETSI frequency-flat Rician fading process in pathgains.

Input Arguments

expand all

Input signal, specified as an NS-by-1 vector, where NS is the number of samples.

Data Types: double
Complex Number Support: Yes

Output Arguments

expand all

Output signal, returned as an NS-by-1 vector of complex values with the same data precision as the input signal x. NS is the number of samples.

Data Types: double
Complex Number Support: Yes

Path gains, returned as an NS-by-1 vector of complex values with the same data precision as the input signal x. NS is the number of samples.

Data Types: double
Complex Number Support: Yes

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 object
stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
cloneCreate duplicate System object
isLockedDetermine if System object is in use
resetReset internal states of System object

Examples

collapse all

Transmit an input signal through a European Telecommunication Standards Institute (ETSI) Rician channel model.

Define the channel configuration using an etsiRicianChannel System object and specify its properties.

chan = etsiRicianChannel;
chan.SampleRate = 2.9e6;     
chan.KFactor = 4;
chan.MaximumDopplerShift = 30;
chan.NumSinusoids = 45;
disp(chan)
  etsiRicianChannel with properties:

             SampleRate: 2900000
                KFactor: 4
    MaximumDopplerShift: 30

  Use get to show all properties

Generate a QPSK-modulated input signal to pass through the channel.

txWaveform = pskmod(randi([0 3],chan.SampleRate,1),4);

Filter the signal through the Rician channel.

rxWaveform = chan(txWaveform);

Produce the same multipath European Telecommunication Standards Institute (ETSI) Rician fading channel response by using two different methods for random number generation. The multipath ETSI Rician fading channel System object includes two methods for random number generation. You can use the current global stream or the mt19937ar algorithm with a specified seed. By interacting with the global stream, the System object can produce the same outputs from the two methods.

Create etsiRicianChannel System object, and then specify its properties. Set the random number generation method as the mt19937ar algorithm.

chan = etsiRicianChannel;
chan.SampleRate = 150000;
chan.KFactor = 2;
chan.MaximumDopplerShift = 10;
chan.RandomStream = "mt19937ar with seed";
chan.Seed = 80;

Modulate randomly generated data.

txWaveform = pskmod(randi([0 3],512,1),4);

Filter the modulated data by using the multipath Rician fading channel System object.

[ChanOut1,PathGains1] = chan(txWaveform);

Set the System object to use the global stream for random number generation.

release(chan);
chan.RandomStream = "Global stream";

Set the global stream to have the same seed that was specified when creating the multipath Rician fading channel System object.

rng(80)

Filter the modulated data by using the multipath Rician fading channel System object again.

[ChanOut2,PathGains2] = chan(txWaveform);

Verify that the channel and path gain outputs are the same for each of the two random number generation methods.

isequal(ChanOut1,ChanOut2)
ans = logical
   1

isequal(PathGains1,PathGains2)
ans = logical
   1

Create a multipath European Telecommunication Standards Institute (ETSI) Rician fading channel and display its Doppler spectrum.

Create etsiRicianChannel System object, and then specify its properties.

chan = etsiRicianChannel;
chan.SampleRate = 3.6e6;
chan.KFactor = 10;
chan.MaximumDopplerShift = 50;
chan.Visualization = "Doppler Spectrum";  % Jake's Doppler spectrum

Generate random binary data for n consecutive frames and pass the data through the multipath Rician fading channel.

n = 50;
for i = 1:n
  x = randi([0 1],3.6e6,1);
  y = chan(x);  % Spectrum visualization is updated only when the buffer is filled
                % Required samples to fill the buffer is mentioned in the scope
end

More About

expand all

References

[1] ETSI TS 101 376-5-5 V1.3.1 (2005-02). GEO-Mobile Radio Interface Specifications (Release 1); Part 5: Radio interface physical layer specifications; Sub-part 5: Radio Transmission and Reception; GMR-1 05.005.

Extended Capabilities

Version History

Introduced in R2021a