Send signal through CDL channel model

The `nrCDLChannel`

System
object™ sends an input signal through a clustered delay line (CDL) multi-input
multi-output (MIMO) link-level fading channel to obtain the channel-impaired signal. The
object implements the following aspects of TR 38.901 [1]:

Section 7.7.1: CDL models

Section 7.7.3: Scaling of delays

Section 7.7.5.1: Scaling of angles

Section 7.7.6: K-factor for LOS channel models

To send a signal through the CDL MIMO channel model:

Create the

`nrCDLChannel`

object and set its properties.Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects? (MATLAB).

creates a CDL MIMO
channel System
object.`cdl`

= nrCDLChannel

creates the object with properties set by using one or more name-value pairs. Enclose
the property name inside quotes, followed by the specified value. Unspecified properties
take default values.`cdl`

= nrCDLChannel(`Name,Value`

)

```
cdl =
nrCDLChannel('DelayProfile','CDL-D','DelaySpread',2e-6)
```

creates the channel
object with CDL-D delay profile and 2 microseconds delay spread.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 (MATLAB).

`DelayProfile`

— CDL delay profile`'CDL-A'`

(default) | `'CDL-B'`

| `'CDL-C'`

| `'CDL-D'`

| `'CDL-E'`

| `'Custom'`

CDL delay profile, specified as `'CDL-A'`

,
`'CDL-B'`

, `'CDL-C'`

, `'CDL-D'`

,
`'CDL-E'`

, or `'Custom'`

. See TR 38.901 Section
7.7.1, Tables 7.7.1-1 to 7.7.1-5.

When you set this property to `'Custom'`

, configure the delay
profile using properties `PathDelays`

, `AveragePathGains`

, `AnglesAoA`

,
`AnglesAoD`

,
`AnglesZoA`

,
`AnglesZoD`

,
`HasLOSCluster`

,
`KFactorFirstCluster`

, `AngleSpreads`

,
`XPR`

, and
`NumStrongestClusters`

.

**Data Types: **`char`

| `string`

`PathDelays`

— Discrete path delays in seconds`0.0`

(default) | numeric scalar | row vectorDiscrete path delays in seconds, specified as a numeric scalar or row vector.
`AveragePathGains`

and `PathDelays`

must have the same
size.

To enable this property, set `DelayProfile`

to `'Custom'`

.

**Data Types: **`double`

`AveragePathGains`

— Average path gains in dB`0.0`

(default) | numeric scalar | row vectorAverage path gains in dB, specified as a numeric scalar or row vector.
`AveragePathGains`

and `PathDelays`

must
have the same size.

To enable this property, set `DelayProfile`

to `'Custom'`

.

**Data Types: **`double`

`AnglesAoA`

— Azimuth of arrival angle in degrees`0.0`

(default) | numeric scalar | row vectorAzimuth of arrival angle in degrees, specified as a numeric scalar or row vector. The vector elements specify the angles for each cluster.

To enable this property, set `DelayProfile`

to `'Custom'`

.

**Data Types: **`double`

`AnglesAoD`

— Azimuth of departure angle in degrees`0.0`

(default) | numeric scalar | row vectorAzimuth of departure angle in degrees, specified as a numeric scalar or row vector. The vector elements specify the angles for each cluster.

To enable this property, set `DelayProfile`

to `'Custom'`

.

**Data Types: **`double`

`AnglesZoA`

— Zenith of arrival angle in degrees`0.0`

(default) | numeric scalar | row vectorZenith of arrival angle in degrees, specified as a numeric scalar or row vector. The vector elements specify the angles for each cluster.

To enable this property, set `DelayProfile`

to `'Custom'`

.

**Data Types: **`double`

`AnglesZoD`

— Zenith of departure angle in degrees`0.0`

(default) | numeric scalar | row vectorZenith of departure angle in degrees, specified as a numeric scalar or row vector. The vector elements specify the angles for each cluster.

To enable this property, set `DelayProfile`

to `'Custom'`

.

**Data Types: **`double`

`HasLOSCluster`

— Line of sight cluster of the delay profile`false`

(default) | `true`

Line of sight (LOS) cluster of the delay profile, specified as
`false`

or `true`

. The `PathDelays`

,
`AveragePathGains`

, `AnglesAoA`

,
`AnglesAoD`

,
`AnglesZoA`

, and
`AnglesZoD`

properties define the delay profile. To enable the LOS cluster of the delay profile, set
`HasLOSCluster`

to `true`

.

To enable this property, set `DelayProfile`

to `'Custom'`

.

**Data Types: **`logical`

`KFactorFirstCluster`

— K-factor in first cluster of delay profile in dB`13.3`

(default) | numeric scalarK-factor in the first cluster of the delay profile in dB, specified as a numeric scalar. The default value corresponds to the K-factor in the first cluster of CDL-D as defined in TR 38.901 Section 7.7.1, Table 7.7.1-4.

To enable this property, set `DelayProfile`

to `'Custom'`

and `HasLOSCluster`

to `true`

.

**Data Types: **`double`

`AngleScaling`

— Apply scaling of angles`false`

(default) | `true`

Apply scaling of angles, specified as `false`

or
`true`

according to TR 38.901 Section 7.7.5.1. When set to
`true`

, the `AngleSpreads`

and `MeanAngles`

properties define the scaling of angles.

To enable this property, set `DelayProfile`

to `'CDL-A'`

, `'CDL-B'`

, `'CDL-C'`

,
`'CDL-D'`

, or `'CDL-E'`

. This property does not
apply for custom delay profile.

**Data Types: **`logical`

`AngleSpreads`

— Desired scaled angle spreads in degrees`[5.0 11.0 3.0 3.0]`

(default) | four-element row vectorDesired scaled angle spreads in degrees, specified as a four-element row vector in one of these forms:

[

*C*_{ASD}*C*_{ASA}*C*_{ZSD}*C*_{ZSA}] row vector for scaling ray offset angles as described in TR 38.901 Section 7.7.1, Step1, where:*C*_{ASD}is the cluster-wise azimuth spread of departure angles*C*_{ASA}is the cluster-wise azimuth spread of arrival angles*C*_{ZSD}is the cluster-wise zenith spread of departure angles*C*_{ZSA}is the cluster-wise zenith spread of arrival angles

To use this form, set

`DelayProfile`

to`'Custom'`

.[ASD ASA ZSD ZSA] row vector for angle scaling,

, as described in TR 38.901 Section 7.7.5.1, where:`AS`

_{desired}ASD is the azimuth spread of departure angles after scaling

ASA is the azimuth spread of arrival angles after scaling

ZSD is the zenith spread of departure angles after scaling

ZSA is the zenith spread of arrival angles after scaling

To use this form, set

`AngleScaling`

to`true`

.

The default value corresponds to the default cluster-wise angle spreads of CDL-A as defined in TR 38.901 Section 7.7.1 Table 7.7.1-1.

To enable this property, set `DelayProfile`

to `'Custom'`

or `AngleScaling`

to `true`

.

**Data Types: **`double`

`MeanAngles`

— Desired mean angles in degrees`[0.0 0.0 0.0 0.0]`

(default) | four-element row vectorDesired mean angles in degrees, specified as a four-element row vector of the form [AoD AoA ZoD ZoA].

AoD is the mean azimuth spread of departure angles after scaling

AoA is the mean azimuth spread of arrival angles after scaling

ZoD is the mean zenith spread of departure angles after scaling

ZoA is the mean zenith spread of arrival angles after scaling

Use this vector for angle scaling as described in TR 38.901 Section 7.7.5.1

To enable this property, set `AngleScaling`

to `true`

.

**Data Types: **`double`

`XPR`

— Cross-polarization power ratio in dB`10.0`

(default) | numeric scalarCross-polarization power ratio in dB, specified as a numeric scalar. The default value corresponds to the cluster-wise cross-polarization power ratio of CDL-A as defined in TR 38.901 Section 7.7.1, Table 7.7.1-1.

To enable this property, set `DelayProfile`

to `'Custom'`

.

**Data Types: **`double`

`DelaySpread`

— Desired RMS delay spread in seconds`30e-9`

(default) | numeric scalarDesired root mean square (RMS) delay spread in seconds, specified as a numeric
scalar. For examples of desired RMS delay spreads,
* DS*, see TR 38.901 Section
7.7.3 and Tables 7.7.3-1 and 7.7.3-2.

To enable this property, set `DelayProfile`

to `'CDL-A'`

, `'CDL-B'`

, `'CDL-C'`

,
`'CDL-D'`

, or `'CDL-E'`

. This property does not
apply for custom delay profile.

**Data Types: **`double`

`CarrierFrequency`

— Carrier frequency in Hz`4e9`

(default) | numeric scalarCarrier frequency in Hz, specified as a numeric scalar.

**Data Types: **`double`

`MaximumDopplerShift `

— Maximum Doppler shift in Hz`5`

(default) | nonnegative numeric scalarMaximum Doppler shift in Hz, specified as a nonnegative numeric scalar. This property applies to all channel paths. When the maximum Doppler shift is set to 0, the channel remains static for the entire input. To generate a new channel realization, reset the object by calling the `reset`

function.

**Data Types: **`double`

`UTDirectionOfTravel `

— User terminal direction of travel in degrees`[0; 90]`

(default) | two-element column vectorUser terminal (UT) direction of travel in degrees, specified as a two-element column vector. The vector elements specify the azimuth and the elevation components [azimuth; elevation].

**Data Types: **`double`

`KFactorScaling`

— K-factor scaling`false`

(default) | `true`

K-factor scaling, specified as `false`

or `true`

.
When set to `true`

, the `KFactor`

property specifies the desired K-factor and the object applies
K-factor scaling as described in TR 38.901 Section 7.7.6.

K-factor scaling modifies both the path delays and path powers.

To enable this property, set `DelayProfile`

to `'CDL-D'`

or `'CDL-E'`

.

**Data Types: **`double`

`KFactor`

— Desired K-factor for scaling in dB`9.0`

(default) | numeric scalarDesired K-factor for scaling in dB, specified as a numeric scalar. For typical K-factor values, see TR 38.901 Section 7.7.6 and Table 7.5-6.

K-factor scaling modifies both the path delays and path powers.

`K-factor`

applies to the overall delay profile. Specifically, the K-factor after the scaling isas described in TR 38.901 Section 7.7.6.`K`

_{model}is the ratio of the power of the first path LOS to the total power of all the Laplacian clusters, including the Laplacian part of the first cluster.`K`

_{model}

To enable this property, set `KFactorScaling`

to `true`

.

**Data Types: **`double`

`SampleRate`

— Sample rate of input signal in Hz`30.72e6`

(default) | positive numeric scalarSample rate of input signal in Hz, specified as a positive numeric scalar.

**Data Types: **`double`

`TransmitAntennaArray`

— Transmit antenna array characteristicsstructure

Transmit antenna array characteristics, specified as a structure that contains these fields:

Parameter Field | Values | Description |
---|---|---|

`Size` |
row vector |
Size of antenna array [ *M*and*N*are the number of rows and columns in the antenna array.*P*is the number of polarizations (1 or 2).*M*_{g}and*N*_{g}are the number of row and column array panels, respectively.
The antenna array elements are mapped panel-wise to the waveform channels (columns) in the
order that a 5-D array of size
For example, an antenna array of size |

`ElementSpacing` |
row vector | Element spacing, in wavelengths, specified as a row vector of the
form [ |

`PolarizationAngles` |
row vector | Polarization angles in degrees, specified as a row vector of the
form [ |

`Orientation` |
column vector | Array orientation in degrees, specified as a column vector of the
form [ |

`Element` |
| Antenna element radiation pattern as described in TR 38.901 Section 7.3. (Note that TR 38.901 superseded TR 38.900.) |

`PolarizationModel` |
| Model that determines the radiation field patterns based on a defined radiation power pattern. See TR 38.901 Section 7.3.2. |

**Data Types: **`struct`

`ReceiveAntennaArray`

— Receive antenna array characteristicsstructure

Receive antenna array characteristics, specified as a structure that contains these fields:

Parameter Field | Values | Description |
---|---|---|

`Size` |
row vector |
Size of antenna array [ *M*and*N*are the number of rows and columns in the antenna array.*P*is the number of polarizations (1 or 2).*M*_{g}and*N*_{g}are the number of row and column array panels, respectively.
The antenna array elements are mapped panel-wise to the waveform channels (columns) in the
order that a 5-D array of size
For example, an antenna array of size |

`ElementSpacing` |
row vector | Element spacing in wavelengths, specified as a row vector of the
form [ |

`PolarizationAngles` |
row vector | Polarization angles in degrees, specified as a row vector of the
form [ |

`Orientation` |
column vector | Array orientation in degrees, specified as a column vector of the form
[α; β; γ]. The
vector elements specify the bearing, downtilt, and slant,
respectively. |

`Element` |
| Antenna element radiation pattern as described in TR 38.901 Section 7.3. (Note that TR 38.901 superseded TR 38.900.) |

`PolarizationModel` |
| Model that determines the radiation field patterns based on a defined radiation power pattern. See TR 38.901 Section 7.3.2. |

**Data Types: **`structure`

`SampleDensity`

— Number of time samples per half wavelength`64`

(default) | `Inf`

| numeric scalarNumber of time samples per half wavelength, specified as `Inf`

or a
numeric scalar. The `SampleDensity`

and `MaximumDopplerShift`

properties control the coefficient generation sampling
rate, *Fcg*, given by

*Fcg* = `MaximumDopplerShift`

× 2 ×
`SampleDensity`

.

Setting `SampleDensity`

to `Inf`

assigns
*Fcg* the value of the `SampleRate`

property.

**Data Types: **`double`

`NormalizePathGains`

— Normalize path gains`true`

(default) | `false`

Normalize path gains, specified as `true`

or
`false`

. Use this property to normalize the fading processes. When
this property is set to `true`

, the total power of the path gains,
averaged over time, is 0 dB. When this property is set to `false`

, the
path gains are not normalized. The average powers of the path gains are specified by the
selected delay profile, or if `DelayProfile`

is
set to `'Custom'`

, by the `AveragePathGains`

property.

**Data Types: **`logical`

`InitialTime`

— Time offset of fading process in seconds`0.0`

(default) | numeric scalarTime offset of fading process in seconds, specified as a numeric scalar.

**Tunable: **Yes

**Data Types: **`double`

`NumStrongestClusters`

— Number of strongest clusters to split into subclusters`0`

(default) | numeric scalarNumber of strongest clusters to split into subclusters, specified as a numeric scalar. See TR 38.901 Section 7.5, Step 11.

To enable this property, set `DelayProfile`

to `'Custom'`

.

**Data Types: **`double`

`ClusterDelaySpread`

— Cluster delay spread in seconds`3.90625e-9`

(default) | nonnegative scalarCluster delay spread in seconds, specified as a nonnegative scalar. Use this property to specify the delay offset between subclusters for clusters split into subclusters. See TR 38.901 Section 7.5, Step 11.

To enable this property, set `DelayProfile`

to `'Custom'`

and `NumStrongestClusters`

to a value greater than zero.

**Data Types: **`double`

`RandomStream`

— Source of random number stream`'mt19937ar with seed'`

(default) | `'Global stream'`

Source of random number stream, specified as one of the following:

`'mt19937ar with seed'`

— The object uses the mt19937ar algorithm for normally distributed random number generation. Calling the`reset`

function resets the filters and reinitializes the random number stream to the value of the`Seed`

property.`'Global stream'`

— The object uses the current global random number stream for normally distributed random number generation. Calling the`reset`

function resets only the filters.

`Seed`

— Initial seed of mt19937ar random number stream`73`

(default) | nonnegative numeric scalarInitial seed of mt19937ar random number stream, specified as a nonnegative numeric scalar.

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

. When calling the `reset`

function, the seed reinitializes the mt19937ar random number
stream.

**Data Types: **`double`

`ChannelFiltering`

— Fading channel filtering`true`

(default) | `false`

Fading channel filtering, specified as `true`

or
`false`

. When this property is set to `false`

, the
following conditions apply:

The object takes no input signal and returns only the path gains and sample times.

The

`SampleDensity`

property determines when to sample the channel coefficients.The

`NumTimeSamples`

property controls the duration of the fading process realization at a sampling rate given by the`SampleRate`

property.

**Data Types: **`logical`

`NumTimeSamples`

— Number of time samples`30720`

(default) | positive integerNumber of time samples, specified as a positive integer. Use this property to set the duration of the fading process realization.

**Tunable: **Yes

To enable this property, set `ChannelFiltering`

to `false`

.

**Data Types: **`double`

`NormalizeChannelOutputs`

— Normalize channel outputs by the number of receive antennas`true`

(default) | `false`

Normalize channel outputs by the number of receive antennas, specified as
`true`

or `false`

.

To enable this property, set `ChannelFiltering`

to `true`

.

**Data Types: **`logical`

`[`

also returns the sample times of the channel snapshots of `signalOut`

,`pathGains`

,`sampleTimes`

] = cdl(`signalIn`

)`pathGains`

(first-dimension elements).

`[`

returns only the path gains and the sample times. In this case, the `pathGains`

,`sampleTimes`

] = cdl()`NumTimeSamples`

property determines the duration of the fading process. The object acts as a source of
the path gains and sample times without filtering an input signal.

To use this syntax, you must set the `ChannelFiltering`

property of `cdl`

to
`false`

.

`signalIn`

— Input signalcomplex scalar | vector |

Input signal, specified as a complex scalar, vector, or *N*_{S}-by-*N*_{T} matrix, where:

*N*_{S}is the number of samples.*N*_{T}is the number of transmit antennas.

**Data Types: **`single`

| `double`

**Complex Number Support: **Yes

`signalOut`

— Output signalcomplex scalar | vector |

Output signal, returned as a complex scalar, vector, or *N*_{S}-by-*N*_{R} matrix, where:

*N*_{S}is the number of samples.*N*_{R}is the number of receive antennas.

The output signal data type is of the same precision as the input signal data type.

**Data Types: **`single`

| `double`

**Complex Number Support: **Yes

`pathGains`

— MIMO channel path gains of fading process MIMO channel path gains of the fading process, returned as an
*N*_{CS}-by-*N*_{P}-by-*N*_{T}-by-*N*_{R}
complex matrix, where:

*N*_{CS}is the number of channel snapshots, controlled by the`SampleDensity`

property of`cdl`

.*N*_{P}is the number of paths, specified by the size of the`PathDelays`

property of`cdl`

.*N*_{T}is the number of transmit antennas.*N*_{R}is the number of receive antennas.

The path gains data type is of the same precision as the input signal data type.

**Data Types: **`single`

| `double`

**Complex Number Support: **Yes

`sampleTimes`

— Sample times of channel snapshotsSample times of channel snapshots, returned as an
*N*_{CS}-by-1 column vector, where
*N*_{CS} is the number of channel snapshots
controlled by the `SampleDensity`

property.

**Data Types: **`double`

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)

`nrCDLChannel`

`info` | Get characteristic information about link-level MIMO fading channel |

`getPathFilters` | Get path filter impulse response for link-level MIMO fading channel |

Transmit waveform through a Clustered Delay Line (CDL) channel model with delay profile CDL-D from TR 38.901 Section 7.7.1.

Define the channel configuration structure using an `nrCDLChannel`

System object. Use delay profile CDL-D, a delay spread of 10 ns, and UT velocity of 15 km/h:

v = 15.0; % UT velocity in km/h fc = 4e9; % carrier frequency in Hz c = physconst('lightspeed'); % speed of light in m/s fd = (v*1000/3600)/c*fc; % UT max Doppler frequency in Hz cdl = nrCDLChannel; cdl.DelayProfile = 'CDL-D'; cdl.DelaySpread = 10e-9; cdl.CarrierFrequency = fc; cdl.MaximumDopplerShift = fd;

Configure the transmit array as [M N P Mg Ng] = [2 2 2 1 1], representing 1 panel (Mg=1, Ng=1) with a 2-by-2 antenna array (M=2, N=2) and P=2 polarization angles. Configure the receive antenna array as [M N P Mg Ng] = [1 1 2 1 1], representing a single pair of cross-polarized co-located antennas.

cdl.TransmitAntennaArray.Size = [2 2 2 1 1]; cdl.ReceiveAntennaArray.Size = [1 1 2 1 1];

Create a random waveform of 1 subframe duration with 8 antennas.

SR = 15.36e6; T = SR * 1e-3; cdl.SampleRate = SR; cdlinfo = info(cdl); Nt = cdlinfo.NumTransmitAntennas; txWaveform = complex(randn(T,Nt),randn(T,Nt));

Transmit the input waveform through the channel.

rxWaveform = cdl(txWaveform);

Plot channel output and path gain snapshots for various sample density values while using an `nrCDLChannel`

System object.

Configure a channel with delay profile CDL-B from TR 38.901 Section 7.7.1. Set the maximum Doppler shift to 300 Hz and the channel sampling rate to 10 kHz.

```
cdl = nrCDLChannel;
cdl.DelayProfile = 'CDL-B';
cdl.MaximumDopplerShift = 300.0;
cdl.SampleRate = 10e3;
cdl.Seed = 19;
```

Configure transmit and receive antenna arrays for single-input/single-output (SISO) operation.

cdl.TransmitAntennaArray.Size = [1 1 1 1 1]; cdl.ReceiveAntennaArray.Size = [1 1 1 1 1];

Create an input waveform with a length of 40 samples.

T = 40; in = ones(T,1);

Plot the step response of the channel (displayed as lines) and the corresponding path gain snapshots (displayed circles) for various values of the `SampleDensity`

property. The sample density property controls how often the channel snapshots are taken relative to the Doppler frequency.

When

`SampleDensity = Inf`

, a channel snapshot is taken for every input sample.When

`SampleDensity = X`

, a channel snapshot is taken at a rate of`Fcs = 2*X*MaximumDopplerShift`

.

The `nrCDLChannel`

object applies the channel snapshots to the input waveform by means of zero-order hold interpolation. The object takes an extra snapshot beyond the end of the input. Some of the final output samples use this extra value to minimize the interpolation error. The channel output contains a transient (and a delay) due to the filters that implement the path delays.

s = [Inf 5 2]; % sample densities legends = {}; figure; hold on; SR = cdl.SampleRate; for i = 1:length(s) % call channel with chosen sample density release(cdl); cdl.SampleDensity = s(i); [out,pathgains,sampletimes] = cdl(in); chInfo = info(cdl); tau = chInfo.ChannelFilterDelay; % plot channel output against time t = cdl.InitialTime + ((0:(T-1)) - tau).' / SR; h = plot(t,abs(out),'o-'); h.MarkerSize = 2; h.LineWidth = 1.5; desc = ['Sample Density=' num2str(s(i))]; legends = [legends ['Output, ' desc]]; disp([desc ', Ncs=' num2str(length(sampletimes))]); % plot path gains against sample times h2 = plot(sampletimes-tau/SR,abs(sum(pathgains,2)),'o'); h2.Color = h.Color; h2.MarkerFaceColor = h.Color; legends = [legends ['path gains, ' desc]]; end

Sample Density=Inf, Ncs=40

Sample Density=5, Ncs=13

Sample Density=2, Ncs=6

xlabel('Time (s)'); title('Channel Output and Path Gains versus Sample Density'); ylabel('Channel Magnitude'); legend(legends,'Location','NorthWest');

[1]
3GPP TR 38.901. “Study on channel model for frequencies
from 0.5 to 100 GHz.” *3rd Generation Partnership Project; Technical
Specification Group Radio Access Network*.

Generate C and C++ code using MATLAB® Coder™.

Usage notes and limitations:

See System Objects in MATLAB Code Generation (MATLAB Coder).

A modified version of this example exists on your system. Do you want to open this version instead?

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

Select web siteYou can also select a web site from the following list:

Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.

- América Latina (Español)
- Canada (English)
- United States (English)

- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)

- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)