# etsiRicianChannel

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

## 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.

## Creation

### Syntax

``chan = etsiRicianChannel``
``chan = etsiRicianChannel(Name,Value)``

### Description

example

````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.```

## 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.

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.

Data Types: `char` | `string`

## Usage

### Syntax

``y = chan(x)``
``[y,pathgains] = chan(x)``

### 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

 `info` Characteristic information about object
 `step` Run System object algorithm `release` Release resources and allow changes to System object property values and input characteristics `clone` Create duplicate System object `isLocked` Determine if System object is in use `reset` Reset 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```

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.

## Version History

Introduced in R2021a