This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

nrPerfectChannelEstimate

Perfect channel estimation

Syntax

hest = nrPerfectChannelEstimate(pathGains,pathFilters,nrb,scs,initialSlot)
hest = nrPerfectChannelEstimate(___,toffset)
hest = nrPerfectChannelEstimate(___,toffset,sampleTimes)
hest = nrPerfectChannelEstimate(___,cpl)

Description

example

hest = nrPerfectChannelEstimate(pathGains,pathFilters,nrb,scs,initialSlot) calculates and returns the perfect channel estimate. The function first reconstructs the channel impulse response from the channel path gains pathGains and the path filter impulse response pathFilters. The function then performs orthogonal frequency division multiplexing (OFDM) demodulation for nrb number of resource blocks with subcarrier spacing scs, and initial slot number initialSlot.

example

hest = nrPerfectChannelEstimate(___,toffset) also specifies the timing offset in addition to the input arguments in the previous syntax. The timing offset indicates the OFDM demodulation starting point on the reconstructed waveform.

hest = nrPerfectChannelEstimate(___,toffset,sampleTimes) also specifies the sample times of the channel snapshots in addition to the input arguments in the first previous syntax.

hest = nrPerfectChannelEstimate(___,cpl) also specifies the cyclic prefix length in addition to the input arguments in the previous syntax.

Examples

collapse all

Define a channel configuration structure using an nrTDLChannel System object. Use delay profileTDL-C from TR 38.901 Section 7.7.2.

SR = 7.68e6;
tdl = nrTDLChannel;
tdl.DelayProfile = 'TDL-C';
tdl.DelaySpread = 100e-9;
tdl.MaximumDopplerShift = 300;
tdl.SampleRate = SR;

Create a random waveform with a duration of 1 subframe.

T = SR*1e-3;
tdlInfo = info(tdl);
Nt = tdlInfo.NumTransmitAntennas;
in = complex(randn(T,Nt),randn(T,Nt));

Transmit the input waveform through the channel. Obtain the path filters used in channel filtering.

[~,pathGains] = tdl(in);
pathFilters = getPathFilters(tdl);

Perform perfect channel estimation using the specified number of blocks, subcarrier spacing, and slot number.

NRB = 25;
SCS = 15;
nSlot = 0;

hest = nrPerfectChannelEstimate(pathGains,pathFilters,NRB,SCS,nSlot);
size(hest)
ans = 1×3

   300    14     2

Plot the estimated channel magnitude response for the first receive antenna.

figure;
surf(abs(hest(:,:,1)));
shading('flat');
xlabel('OFDM Symbols');
ylabel('Subcarriers');
zlabel('|H|');
title('Channel Magnitude Response');

Repeat the channel estimate for extended cyclic prefix.

hest = nrPerfectChannelEstimate(pathGains,pathFilters,NRB,SCS, ...
    nSlot,'extended');
size(hest)
ans = 1×3

   300    12     2

Plot the updated results.

figure;
surf(abs(hest(:,:,1)));
shading('flat');
xlabel('OFDM Symbols');
ylabel('Subcarriers');
zlabel('|H|');
title('Channel Magnitude Response with Extended Cyclic Prefix');

Define a channel configuration structure using an nrCDLChannel System object. Use delay profile CDL-C from TR 38.901 Section 7.7.1.

 cdl = nrCDLChannel;
 cdl.DelayProfile = 'CDL-D';
 cdl.DelaySpread = 30e-9;
 cdl.MaximumDopplerShift = 5;

Create a random waveform with a duration of 1 subframe.

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

Transmit the input waveform through the channel. Obtain the path filters used in channel filtering.

[~,pathGains,sampleTimes] = cdl(in);
pathFilters = getPathFilters(cdl);

Perform timing offset estimation using the path filter and path gains.

offset = nrPerfectTimingEstimate(pathGains,pathFilters);

Perform perfect channel estimation. Use the specified number of blocks, subcarrier spacing, slot number, timing offset, and sample times.

NRB = 25;
SCS = 15;
nSlot = 0;
hest = nrPerfectChannelEstimate(pathGains,pathFilters,...
    NRB,SCS,nSlot,offset,sampleTimes);
size(hest)
ans = 1×4

   300    14     2     8

Plot the estimated channel magnitude response for the first receive antenna.

figure;
surf(abs(hest(:,:,1)));
shading('flat');
xlabel('OFDM Symbols');
ylabel('Subcarriers');
zlabel('|H|');
title('Channel Magnitude Response');

Input Arguments

collapse all

Channel path gains of the fading process, specified as an NCS-by-NP-by-NT-by-NR complex matrix, where:

  • NCS is the number of channel snapshots.

  • NP is the number of paths.

  • NT is the number of transmit antennas.

  • NR is the number of receive antennas.

Data Types: single | double
Complex Number Support: Yes

Path filter impulse response, specified as an NH-by-NP real matrix, where:

  • NH is the number of impulse response samples.

  • NP is the number of paths.

Each column of the matrix contains the filter impulse response for each path of the delay profile.

Data Types: double

Number of resource blocks, specified as an integer from 1 to 275.

Data Types: double

Subcarrier spacing in kHz, specified as 15, 30, 60, 120, or 240.

Data Types: double

Zero-based initial slot number, specified as a nonnegative integer. The function selects the appropriate cyclic prefix lengths for the OFDM demodulation based on the value of initialSlot modulo the number of slots per subframe.

Data Types: double

Timing offset in samples, specified as a nonnegative integer. The timing offset indicates the OFDM demodulation starting point on the reconstructed waveform. The offset accounts for propagation delays, which is essential when obtaining the perfect estimate of the channel seen by a synchronized receiver. Use nrPerfectTimingEstimate to derive toffset.

Data Types: double

Sample times of channel snapshots, specified as an NCS-by-1 column vector of nonnegative real numbers. The number of channel snapshots, NCS, is identical to the first dimension of pathGains.

Data Types: double

Cyclic prefix length, specified as one of these values.

  • 'normal' — Use this value to specify normal cyclic prefix.

  • 'extended' — Use this value to specify extended cyclic prefix. Note that for the numerologies specified in TS 38.211 Section 4.2, extended cyclic prefix length is applicable only for 60 kHz subcarrier spacing.

Data Types: char | string

Output Arguments

collapse all

Perfect channel estimate, returned as an NSC-by-NSYM-by-NR-by-NT array of complex or real numbers, where:

  • NSC is the number of subcarriers.

  • NSYM is the number of OFDM symbols.

  • NR is the number of receive antennas.

  • NT is the number of transmit antennas.

hest inherits its data type from pathGains.

Data Types: double | single

References

[1] 3GPP TS 38.211. “NR; Physical channels and modulation.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

See Also

Functions

System Objects

Introduced in R2018b