Main Content

pre6GPerfectChannelEstimate

Pre-6G perfect channel estimation

Since R2026a

    Description

    Add-On Required: This feature requires the 6G Exploration Library for 5G Toolbox add-on.

    H = pre6GPerfectChannelEstimate(carrier,pathGains,pathFilters,timeOffset,sampleTimes) performs perfect channel estimation for 6G research and prototyping. The function reconstructs the channel impulse response from the channel path gains pathGains and the path filter impulse response pathFilters, then performs OFDM demodulation using the carrier parameters specified by carrier. The timeOffset input specifies the timing offset for demodulation, and sampleTimes specifies the sample times of the channel snapshots.

    example

    H = pre6GPerfectChannelEstimate(___,Name=Value) specifies options using one or more name-value arguments. For example, NumTimeSamples=15360 specifies the number of time-domain samples for channel estimation.

    example

    Examples

    collapse all

    Create carrier and reference signal configuration objects.

    carrier = pre6GCarrierConfig;
    carrier.NSizeGrid = 132;
    carrier.SubcarrierSpacing = 120;
    
    rs = pre6GReferenceSignalConfig;
    rs.PRBSet = 0:carrier.NSizeGrid-1;
    rs.SubcarrierLocations = 0:2:10;
    rs.SymbolLocations = [0 7];

    Create an empty resource grid for the carrier configuration. Generate reference signal indices and symbols. Map the symbols onto the resource grid.

    txGrid = pre6GResourceGrid(carrier,1);
    rsInd = pre6GReferenceSignalIndices(carrier,rs);
    rsSym = pre6GReferenceSignal(carrier,rs);
    txGrid(rsInd) = rsSym;

    Get the sample rate for the carrier. Generate a time-domain waveform for the carrier and grid and extract the number of time-domain samples.

    ofdmInfo = pre6GOFDMInfo(carrier);
    sampleRate = ofdmInfo.SampleRate;
    txWaveform = pre6GOFDMModulate(carrier,txGrid);
    nSamples = size(txWaveform,1);

    Define a two-path fading channel. The first path is direct. The second path is a reflection that arrives eight samples later with half the amplitude and a Doppler shift of 50 Hz.

    sampleTimes = (0:nSamples-1).'/sampleRate;
    doppler = exp(1j*2*pi*50*sampleTimes);
    pathDelays = [0 8/sampleRate];           
    pathGains = [ones(nSamples,1), 0.5*doppler];

    Create a channel filter System object™ with the channel parameters.

    chanFilt = comm.ChannelFilter( ...
        SampleRate=sampleRate, ...
        PathDelays=pathDelays, ...
        NormalizeChannelOutputs=false);

    Pass the waveform through the channel and get the filter information for perfect channel estimation.

    rxWaveform = chanFilt(txWaveform, pathGains);
    
    chanInfo = info(chanFilt);
    pathFilters = chanInfo.ChannelFilterCoefficients.';  % Transpose to maxLen-by-Np
    timeOffset = chanInfo.ChannelFilterDelay;

    Perform perfect channel estimation. Plot the absolute value of the channel estimate at each subcarrier and OFDM symbol.

    H = pre6GPerfectChannelEstimate(carrier,pathGains,pathFilters, ...
        timeOffset,sampleTimes);
    
    figure;
    imagesc(abs(H(:,:,1,1)));
    axis xy; xlabel("OFDM Symbol"); ylabel("Subcarrier");
    title("Perfect Channel Estimate Magnitude"); colorbar;

    Figure contains an axes object. The axes object with title Perfect Channel Estimate Magnitude, xlabel OFDM Symbol, ylabel Subcarrier contains an object of type image.

    Input Arguments

    collapse all

    Carrier configuration parameters for a specific OFDM numerology, specified as a pre6GCarrierConfig object. The function uses these properties of the pre6GCarrierConfig object to perform OFDM demodulation:

    Channel path gains, specified as a NCS-by-NP-by-NT-by-NR-by-B array, 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.

    • B is the batch size.

    Data Types: single | double

    Path filter impulse response, specified as an NH-by-NP matrix, where NH is the number of impulse response samples and NP is the number of paths. Each column of the matrix contains the filter impulse response for one propagation path.

    Data Types: single | 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.

    Data Types: double

    Sample times of the channel snapshots, specified as an NCS-by-1 column vector of nonnegative real numbers. sampleTimes specifies the time each channel snapshot occurs. The number of channel snapshots, NCS, is equal to the first dimension of pathGains. The channel snapshots must span at least one slot. The function performs channel estimation for each complete slot.

    Data Types: single | double

    Name-Value Arguments

    collapse all

    Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

    Example: NumTimeSamples=15360 specifies the number of time-domain samples for channel estimation.

    Number of time-domain samples for channel estimation, specified as a positive integer. This value determines the duration over which the function performs channel estimation. By default, the function uses the number of samples in the current slot, as determined by the carrier configuration.

    Data Types: double

    Enable batching across slots, specified as "off" or "on". When you specify this argument as "on", the function treats each element along the fifth dimension (B) of the pathGains input as a separate slot and performs channel estimation with uniform OFDM symbol timing across all slots in the batch.

    Data Types: char | string

    Output Arguments

    collapse all

    Perfect channel estimate, returned as an NSC-by-NSYM-by-NR-by-NT-by-B complex array, 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.

    • B is the batch size.

    H inherits its data type from pathGains.

    Data Types: single | double
    Complex Number Support: Yes

    Extended Capabilities

    expand all

    Version History

    Introduced in R2026a