comm.OSTBCCombiner System object

Package: comm

Combine inputs using orthogonal space-time block code

Description

The OSTBCCombiner object combines the input signal (from all of the receive antennas) and the channel estimate signal to extract the soft information of the symbols encoded by an OSTBC. The input channel estimate does not need to be constant and can vary at each call to the step method. The combining algorithm uses only the estimate for the first symbol period per codeword block. A symbol demodulator or decoder would follow the Combiner object in a MIMO communications system.

To combine input signals and extract the soft information of the symbols encoded by an OSTBC:

  1. Define and set up your OSTBC combiner object. See Construction.

  2. Call step to Combine inputs using an orthogonal space-time block code according to the properties of comm.OSTBCCombiner. The behavior of step is specific to each object in the toolbox.

Construction

H = comm.OSTBCCombiner creates an orthogonal space-time block code (OSTBC) combiner System object™, H. This object combines the input signal (from all of the receive antennas) with the channel estimate signal to extract the soft information of the symbols encoded by an OSTBC.

H = comm.OSTBCCombiner(Name,Value) creates an OSTBC Combiner object, H, with each specified property set to the specified value. You can specify additional name-value pair arguments in any order as (Name1,Value1,...,NameN,ValueN).

H = comm.OSTBCCombiner(N,M,Name,Value) creates an OSTBC Combiner object, H. This object has the NumTransmitAntennas property set to N, the NumReceiveAntennas property set to N, and the other specified properties set to the specified values.

Properties

NumTransmitAntennas

Number of transmit antennas

Specify the number of antennas at the transmitter as 2 | 3 | 4. The default is 2.

SymbolRate

Symbol rate of code

Specify the symbol rate of the code as 3/4 | 1/2. The default is 3/4. This property applies when the NumTransmitAntennas property is greater than 2. For 2 transmit antennas, the symbol rate defaults to 1.

NumReceiveAntennas

Number of receive antennas

Specify the number of antennas at the receiver as a double-precision, real, scalar integer value from 1 to 8. The default is 1.

 Fixed-Point Properties

Methods

cloneCreate OSTBC combiner object with same property values
getNumInputsNumber of expected inputs to step method
getNumOutputsNumber of outputs from step method
isLockedLocked status for input attributes and nontunable properties
releaseAllow property value and input characteristics changes
stepCombine inputs using orthogonal space-time block code

Examples

expand all

Encode with OSTBC and Calculate Errors

Determine the bit error rate for a QSPK signal employing OSTBC encoding when transmitted through a 4x2 MIMO channel. Perfect channel estimation is assumed to be used by the OSTBC combiner.

Define the system parameters.

numTx = 4;         % Number of transmit antennas
numRx = 2;         % Number of receive antennas
Rs = 1e6;          % Sampling rate (Hz)
tau = [0 2e-6];    % Path delays (sec)
pdb = [0 -10];     % Average path gains (dB)
maxDopp = 30;      % Maximum Doppler shift (Hz)
numBits = 12000;   % Number of bits
SNR = 6;           % Signal-to-noise ratio (dB)

Set the random number generator to its default state to ensure repeatable results.

rng default

Create a QPSK modulator System object™. Set the BitInput property to true and the SymbolMapping property to Gray.

hMod = comm.QPSKModulator(...
    'BitInput',true,...
    'SymbolMapping','Gray');

Create a corresponding QPSK demodulator System object. Set the SymbolMapping property to Gray and the BitOutput property to true.

hDemod = comm.QPSKDemodulator(...
    'SymbolMapping','Gray',...
    'BitOutput',true);

Create an OSTBC encoder and combiner pair, where the number of antennas is specifed in the system parameters.

hOSTBCEnc = comm.OSTBCEncoder(...
    'NumTransmitAntennas',numTx);

hOSTBCComb = comm.OSTBCCombiner(...
    'NumTransmitAntennas',numTx,...
    'NumReceiveAntennas',numRx);

Create a flat 4x2 MIMO Channel System object, where the channel characteristics are set using name-value pairs. The path gains are made available to serve as a perfect channel estimate for the OSTBC combiner.

hChan = comm.MIMOChannel(...
    'SampleRate',Rs,...
    'PathDelays',tau,...
    'AveragePathGains',pdb,...
    'MaximumDopplerShift',maxDopp,...
    'SpatialCorrelation',false,...
    'NumTransmitAntennas',numTx,...
    'NumReceiveAntennas',numRx,...
    'PathGainsOutputPort',true);

Create an AWGN channel System object in which the noise method is specified as a signal-to-noise ratio.

hAWGN = comm.AWGNChannel(...
    'NoiseMethod','Signal to noise ratio (SNR)',...
    'SNR',SNR,...
    'SignalPower',1);

Generate a random sequence of bits.

data = randi([0 1],numBits,1);

Apply QPSK modulation.

modData = step(hMod,data);

Encode the modulated data using the OSTBC encoder object.

encData = step(hOSTBCEnc,modData);

Transmit the encoded data through the MIMO channel and add white noise by using the step functions of the MIMO and AWGN channel objects, respectively.

[chanOut,pathGains] = step(hChan,encData);
rxSignal = step(hAWGN,chanOut);

Sum the pathGains array along the number of paths (2nd dimension) to form the channel estimate. Apply the squeeze function to make its dimensions conform with those of rxSignal.

chEst = squeeze(sum(pathGains,2));

Combine the received MIMO signal and its channel estimate using the step function of the OSTBC combiner object. Demodulate the combined signal.

combinedData = step(hOSTBCComb,rxSignal,chEst);
receivedData = step(hDemod,combinedData);

Compute the number of bit errors and the bit error rate.

[numErrors,ber] = biterr(data,receivedData)
numErrors =

    11


ber =

   9.1667e-04

Algorithms

This object implements the algorithm, inputs, and outputs described on the OSTBC Combiner block reference page. The object properties correspond to the block parameters.

Was this topic helpful?