p681LMSChannel
Filter input signal through ITU-R P.681-11 LMS frequency-flat fading channel
Since R2022a
Description
The p681LMSChannel
System object™ filters a real or complex input signal through a frequency-flat fading land
mobile-satellite (LMS) communication channel, as defined in the ITU-R Recommendation P.681-11
Section 6.2 [1].
To filter an input signal through a P.681-11 LMS time-varying channel:
Create the
p681LMSChannel
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?
Creation
Description
creates an ITU-R
P.681-11 LMS frequency-flat fading channel System object.chan
= p681LMSChannel
The default System object has the environment set to an urban scenario, with carrier frequency of 2.2 GHz and an elevation angle of 45 degrees. This object models a single geostationary satellite.
sets properties using one or more
name-value arguments. For example, chan
= p681LMSChannel(Name
=Value
)SampleRate=20e3
sets the input
signal sample rate to 20e3
.
Properties
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.
SampleRate
— Input signal sample rate
7.68e6
(default) | positive scalar
Input signal sample rate in hertz, specified as a positive scalar.
Data Types: double
InitialState
— Initial state of channel
"Good"
(default) | "Bad"
Initial state of the channel, specified as "Good"
or
"Bad"
.
Data Types: char
| string
CarrierFrequency
— Carrier frequency
2.2e9
(default) | nonnegative scalar
Carrier frequency in hertz, specified as a nonnegative scalar.
Data Types: double
ElevationAngle
— Path elevation angle to geostationary satellite
45
(default) | scalar
Path elevation angle to a geostationary satellite in degrees, specified as a scalar. The nominal value is in the range [0, 90].
Data Types: double
MobileSpeed
— Speed of mobile terminal
0.8333
(default) | nonnegative scalar
Speed of mobile terminal in m/s, specified as a nonnegative scalar. The default
value of 0.8333
m/s translates to 3 km/h.
This property affects the Doppler spread applied to the multipath component and also the Doppler shift applied to the direct path component.
Setting this property to 0
, results in a static channel. In this
case, the Doppler spread is not applicable for the multipath component and the Doppler
shift is also not applied in direct path component of the channel.
Data Types: double
AzimuthOrientation
— Azimuth orientation
0
(default) | scalar
Azimuth orientation in degrees, specified as a scalar. This value specifies the direction of movement of the ground or mobile terminal. The nominal value is in the range [0, 360].
When you set this property to odd multiples of 90, the Doppler shift caused by the mobile movement in the direct path component is nonexistent.
Data Types: double
Environment
— Type of propagation environment
"Urban"
(default) | "Suburban"
| "RuralWooded"
| "Village"
| "Residential"
| "Highway"
| "Rural"
| "Train"
| "Custom"
Type of propagation environment, specified as one of these values.
"Urban"
"Suburban"
"RuralWooded"
"Village"
"Residential"
"Highway"
— Applicable only when you set the value of CarrierFrequency property in the range [10, 20] GHz"Rural"
— Applicable only when you set the value of CarrierFrequency property in the range [10, 20] GHz"Train"
— Applicable only when you set the value of CarrierFrequency property in the range [10, 20] GHz"Custom"
When you set this property to "Custom"
, configure the propagation
environment using these properties.
Data Types: char
| string
StateDistribution
— Parameters of state duration distribution
[3.0639 2.9108; 1.6980 1.2602]
(default) | 2-by-2 matrix
Parameters of state duration distribution in dB, specified as a 2-by-2 matrix. For example, if you specify the input as [muG, muB; sigmaG, sigmaB], then:
muG and sigmaG represent the mean and standard deviation of good state duration, respectively.
muB and sigmaB represent the mean and standard deviation of bad state duration, respectively.
Dependencies
To enable this property, set the Environment property to "Custom"
.
Data Types: double
MinStateDuration
— Minimum duration of each state
[10 6]
(default) | two-element row vector
Minimum duration of each state in meters, specified as a two-element row vector. The first element corresponds to good state and the second element corresponds to bad state.
Dependencies
To enable this property, set the Environment property to "Custom"
.
Data Types: double
DirectPathDistribution
— Parameters of direct path amplitude distribution
[-1.8225 -15.4844; 1.1317 3.3245]
(default) | 2-by-2 matrix
Parameters of direct path amplitude distribution in dB, specified as a 2-by-2 matrix. For example, if you specify the input as [muMaG, muMaB; sigmaMaG, sigmaMaB], then:
muMaG and sigmaMaG represent the mean of the direct path amplitude (Ma) and the standard deviation of Ma in good state, respectively.
muMaB and sigmaMaB represent the mean and standard deviation of Ma in bad state, respectively.
Dependencies
To enable this property, set the Environment property to "Custom"
.
Data Types: double
MultipathPowerCoefficients
— Coefficients to compute multipath power
[-0.0481 0.9434; -14.7450 -1.7555]
(default) | 2-by-2 matrix
Coefficients to compute the multipath power, specified as a 2-by-2 matrix. For example, if you specify the input as [h1G, h1B; h2G, h2B], then:
h1G and h2G represent the coefficients in good state.
h1B and h2B represent the coefficients in bad state.
Dependencies
To enable this property, set the Environment property to "Custom"
.
Data Types: double
StandardDeviationCoefficients
— Coefficients to compute standard deviation of direct path amplitude
[-0.4643 -0.0798; 0.3334 2.8101]
(default) | 2-by-2 matrix
Coefficients to compute standard deviation of direct path amplitude in all states, specified as a 2-by-2 matrix. For example, if you specify the input as [g1G, g1B; g2G, g2B], then:
g1G and g2G represent the coefficients in good state.
g1B and g2B represent the coefficients in bad state.
Dependencies
To enable this property, set the Environment property to "Custom"
.
Data Types: double
DirectPathCorrelationDistance
— Direct path amplitude correlation distance
[1.7910 1.7910]
(default) | two-element row vector
Direct path amplitude correlation distance (Lcorr) in meters, specified as a two-element row vector. The first element corresponds to good state and the second element corresponds to bad state.
Dependencies
To enable this property, set the Environment property to "Custom"
.
Data Types: double
TransitionLengthCoefficients
— Coefficients to compute transition length
[0.0744; 2.1423]
(default) | two-element column vector
Coefficients to compute the transition length (f1;f2), specified as a two-element column vector.
Dependencies
To enable this property, set the Environment property to "Custom"
.
Data Types: double
StateProbabilityRange
— Minimum and maximum probability of each state
[0.05 0.1; 0.95 0.9]
(default) | 2-by-2 matrix
Minimum and maximum probability of each state, specified as a 2-by-2 matrix. For example, if you specify the input as [pminG, pminB; pmaxG, pmaxB], then:
pminG and pmaxG represent the minimum and maximum values of state probability in good state.
pminB and pmaxB represent the minimum and maximum values of state probability in bad state.
The minimum probability must be less than the maximum probability in a state. The value of each element must be in range [0, 1].
Dependencies
To enable this property, set the Environment property to "Custom"
.
Data Types: double
ChannelFiltering
— Channel filtering
true
or 1
(default) | false
or 0
Channel filtering, specified as one of these logical values.
1
(true
) — The object accepts an input signal and produces a filtered output signal, in addition to the channel path gains, sample times, and state series.0
(false
) — The object does not accept an input signal, produces no filtered output signal, and outputs only channel path gains, sample times, and state series. You must specify the duration of the fading process by using the NumSamples property, and the sampling rate by using the SampleRate property.
Data Types: logical
NumSamples
— Number of time samples
7680
(default) | nonnegative integer
Number of time samples used to set the duration of the fading process realization, specified as a nonnegative integer.
Tunable: Yes
Dependencies
To enable this property, set ChannelFiltering property to false
.
Data Types: double
OutputDataType
— Data type of outputs
"double"
(default) | "single"
Data type of outputs, specified as one of these values.
"double"
"single"
Dependencies
To enable this property, set ChannelFiltering property to false
.
Data Types: char
| string
FadingTechnique
— Channel model fading technique
"Filtered Gaussian noise"
(default) | "Sum of sinusoids"
Channel model fading technique, specified as "Filtered Gaussian noise"
or "Sum of sinusoids"
.
Data Types: char
| string
NumSinusoids
— Number of sinusoids used
48
(default) | positive integer
Number of sinusoids used to generate the Doppler fading samples, specified as a positive integer.
Dependencies
To enable this property, set the FadingTechnique property to "Sum of
sinusoids"
.
Data Types: double
| uint16
RandomStream
— Source of random number stream
"Global stream"
(default) | "mt19937ar with seed"
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 uniformly and normally distributed random number generation. In this case, thereset
object function resets only the filters.When you specify
"mt19937ar with seed"
, the object uses the mt19937ar algorithm for uniformly and normally distributed random number generation. In this case, thereset
object function resets the filters and reinitializes the random number stream to the value of the Seed property.
Data Types: char
| string
Seed
— Initial seed
73
(default) | nonnegative integer
Initial seed of the mt19937ar random number stream generator algorithm, 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
| uint32
Visualization
— Channel visualization
"Off"
(default) | "Impulse response"
| "Frequency response"
| "Impulse and frequency responses"
| "Doppler spectrum"
Channel visualization, specified as one of these options.
"Off"
"Impulse response"
"Frequency response"
"Impulse and frequency responses"
"Doppler spectrum"
When you set this property to enable the visualization, selected channel characteristics are animated in separate figures, with each System object call.
For more information, see the Channel Visualization section.
Data Types: char
| string
Usage
Description
[
produces path gains, pathgains
,sampletimes
,stateseries
] = chan()pathgains
, sample times,
sampletimes
, and state series, stateseries
for
an ITU-R P.681-11 LMS flat fading channel.
In this case, the System object acts as a source of path gains, sample times, and state series.
Specify the duration of the fading process by using the NumSamples property. Specify the datatype of outputs using the OutputDataType property.
Note
This syntax is applicable when you set the ChannelFiltering property to false
.
[
filters the input signal, y
,pathgains
,sampletimes
,stateseries
] = chan(x
)x
, through an ITU-R P.681-11 LMS flat
fading channel, and returns the output channel-impaired signal in y
,
in addition to the outputs in the previous syntax.
Note
This syntax is applicable when you set the ChannelFiltering property to true
.
Input Arguments
x
— Input signal
NS-by-1 vector
Input signal, specified as an NS-by-1 vector, where NS is the number of input samples.
Data Types: single
| double
Complex Number Support: Yes
Output Arguments
y
— Output signal
NS-by-1 vector
Output signal, returned as an NS-by-1
vector of complex values with the same data precision and length as the input signal
x
.
NS is the number of input
samples.
Data Types: single
| double
Complex Number Support: Yes
pathgains
— Channel path gains of fading process
NS-by-1 vector
Channel path gains of fading process, returned as an NS-by-1 vector of complex values.
When you set the ChannelFiltering property to
true
,pathgains
is of the same data precision as the input signalx
, and NS is the number of input samples.When you set the ChannelFiltering property to
false
,pathgains
is of the same data precision as the OutputDataType property and NS is equal to the NumSamples property.
Data Types: single
| double
Complex Number Support: Yes
sampletimes
— Sample times of channel snapshots
NS-by-1 vector
Sample times of channel snapshots, returned as an NS-by-1 vector.
When you set the ChannelFiltering property to
true
,sampletimes
is of the same data precision as the input signalx
, and NS is the number of input samples.When you set the ChannelFiltering property to
false
,sampletimes
is of the same data precision as the OutputDataType property and NS is equal to the NumSamples property.
Data Types: single
| double
stateseries
— State series of channel
NS-by-1 vector
State series of the channel, returned as an
NS-by-1 vector. Each value of this vector
describes the state in which channel is present for that channel snapshot. A value of
0
represents bad state. A value of 1
represents good state. A value between 0 and 1 represents a state transition.
When you set the ChannelFiltering property to
true
,stateseries
is of the same data precision as the input signalx
, and NS is the number of input samples.When you set the ChannelFiltering property to
false
,stateseries
is of the same data precision as the OutputDataType property and NS is equal to the NumSamples property.
Data Types: single
| double
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)
Specific to p681LMSChannel
info | Characteristic information about object |
Examples
Transmit Signal Through P.681-11 LMS Channel
Create and Configure the Channel
Create an ITU-R P.681-11 LMS channel and configure it for a suburban scenario with a carrier frequency of 20 GHz and an elevation angle of 50 degrees. Set the sample rate to 6000 kHz.
Specify the mobile terminal speed to 50 m/s, with an azimuth orientation of 20 degrees.
chan = p681LMSChannel; chan.SampleRate = 6e6; % Hz chan.CarrierFrequency = 20e9; % Hz chan.ElevationAngle = 50; % degrees chan.Environment = "Suburban"; chan.MobileSpeed = 50; % m/s chan.AzimuthOrientation = 20; % degrees
Display the channel characteristics.
disp(chan)
p681LMSChannel with properties: SampleRate: 6000000 InitialState: "Good" CarrierFrequency: 2.0000e+10 ElevationAngle: 50 MobileSpeed: 50 AzimuthOrientation: 20 Environment: "Suburban" ChannelFiltering: true Use get to show all properties
Transmit Input Signal Through Channel
Set the random number generation seed as default.
rng("default")
Generate a random QPSK-modulated input signal.
numSamples = 6e6;
txWaveform = pskmod(randi([0 3],numSamples,1),4); % Modulation order = 4
Filter the signal through the channel.
[rxWaveform,pathGains,sampleTimes,stateSeries] = chan(txWaveform);
Visualize Space Series and State Series
Plot the space series as a function of time.
figure % Create figure window subplot(2,1,1) plot(sampleTimes,20*log10(abs(pathGains))) title('Space Series') xlabel('Time (in s)') ylabel('Path Gain (in dB)') grid on
Plot the state series as a function of time.
subplot(2,1,2) plot(sampleTimes,stateSeries) title('State Series') xlabel('Time (in s)') ylabel('State') grid on
Plot Doppler Spectrum for P.681-11 LMS Channel
Define the channel configuration using a p681LMSChannel
System object and specify its properties.
Set the visualization as Doppler spectrum and disable the channel filtering.
chan = p681LMSChannel; chan.SampleRate = 450000; % Hz chan.CarrierFrequency = 11e9; % Hz chan.ElevationAngle = 50; % degrees chan.MobileSpeed = 20; % m/s chan.Visualization = "Doppler spectrum"; chan.ChannelFiltering = false; chan.NumSamples = 4e7;
Display the channel characteristics.
disp(chan)
p681LMSChannel with properties: SampleRate: 450000 InitialState: "Good" CarrierFrequency: 1.1000e+10 ElevationAngle: 50 MobileSpeed: 20 AzimuthOrientation: 0 Environment: "Urban" ChannelFiltering: false NumSamples: 40000000 OutputDataType: "double" Use get to show all properties
Get the path gains, sample times, and state series of the channel. Also, observe the Doppler spectrum.
[pathGains,sampleTimes,stateSeries] = chan();
Get P.681-11 LMS Channel Information
Get channel information from a p681LMSChannel
System object by using the info
object function.
Create an ITU-R P.681-11 LMS channel System object and specify its properties.
chan = p681LMSChannel; chan.SampleRate = 10e3; % Hz chan.MobileSpeed = 2; % m/s chan.Environment = "RuralWooded"; disp(chan)
p681LMSChannel with properties: SampleRate: 10000 InitialState: "Good" CarrierFrequency: 2.2000e+09 ElevationAngle: 45 MobileSpeed: 2 AzimuthOrientation: 0 Environment: "RuralWooded" ChannelFiltering: true Use get to show all properties
QPSK-modulate a random input signal, and then pass it through the channel.
numSamples = 2e4; txWaveform = pskmod(randi([0 3],numSamples,1),4); [rxWaveform,pathGains,sampleTimes,stateSeries] = chan(txWaveform);
Get the characteristic information about the P.681-11 LMS channel.
info(chan)
ans = struct with fields:
PathDelays: 0
ChannelFilterDelay: 0
ChannelFilterCoefficients: 1
NumSamplesProcessed: 20000
Transmit another QPSK-modulated random input signal through the channel
numSamples2 = 3e4; txWaveform2 = pskmod(randi([0 3],numSamples2,1),4); [rxWaveform2,pathGains2,sampleTimes2,stateSeries2] = chan(txWaveform2);
Observe the change in number of samples processed.
info(chan)
ans = struct with fields:
PathDelays: 0
ChannelFilterDelay: 0
ChannelFilterCoefficients: 1
NumSamplesProcessed: 50000
Algorithms
Doppler Phenomena
To calculate the Doppler spread and Doppler shift due to the movement of the mobile on Earth, refer to these formulas.
The maximum Doppler spread due to mobile movement is given by the following formula:
Fmob_max_spread = (vmob*fc) / c
where:
vmob is the speed of the mobile terminal on Earth in m/s, specified as the MobileSpeed property.
fc is the carrier frequency in Hz, specified by the CarrierFrequency property.
c is the speed of light in free space in m/s, specified as
physconst
('lightspeed')
.
The Doppler shift due to mobile movement is given by the following formula:
fdmob = Fmob_max_spread *
cosd
(θ) *cosd
(φ)where:
Fmob_max_spread is the maximum Doppler spread due to mobile movement.
θ is the path elevation angle to the satellite in degrees, specified by the ElevationAngle property.
φ is the azimuth orientation in degrees, specified by the AzimuthOrientation property.
The maximum Doppler shift caused by the movement of the mobile must be less than one-tenth of SampleRate property.
Channel Visualization
The p681LMSChannel
System object enables visualization of the channel impulse response, frequency response, and
Doppler spectrum.
The Doppler spectrum plot displays the empirically determined spectrum from the path gains of the channel. The Doppler spectrum values are in dB.
When there is no mobile movement, the channel is static channel. The empirical data is displayed as a line for the case of nonstatic channels and as a point for static channels. Before the empirical plot is updated, the internal buffer must be completely filled with the required number of channel samples. The empirical plot is the running mean of the spectrum that is calculated from each full buffer. For nonstatic channels, the number of input samples that is needed before the next update is displayed in the status bar located at the bottom of plot. The number of samples that is needed is a function of the sample rate and the maximum Doppler shift depending on mobile movement. For static channels, the text
"Reset fading channel for next update"
is displayed.Nonstatic Channel
Static Channel
For channel impulse and frequency visualizations, see Channel Visualization.
References
[1] ITU-R Recommendation P.681-11 (08/2019). “Propagation data required for the design systems in the land mobile-satellite service.” P Series; Radiowave propagation.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Usage notes and limitations:
Code generation is available only when the
Visualization
property is"Off"
.See System Objects in MATLAB Code Generation (MATLAB Coder).
Version History
Introduced in R2022a
Abrir ejemplo
Tiene una versión modificada de este ejemplo. ¿Desea abrir este ejemplo con sus modificaciones?
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
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: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)