Documentation Center

  • Trial Software
  • Product Updates

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

Encode and decode QPSK modulated data with OSTBC and calculate error.

Define system parameters.

 numTx = 2; numRx = 1; Rs = 1e6; maxDopp = 30; numBits = 1024; SNR = 10;

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

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

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

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

Create the encoding System objects and define the number of transmit and receive antennas.

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

Create a MIMO Channel System object and define the channel characteristics.

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

Create an AWGN channel System object and define the channel characteristics.

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

Generate a random stream of bits.

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

Modulate the random by passing it to the QPSK modulator System object.

 modData = step(hMod, data);

Encode the modulated data using OSTBC.

encData = step(hOSTBCEnc, modData); 

Transmit through Rayleigh and AWGN channels.

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

Decode and demodulate the received signal.

decData = step(hOSTBCComb, rxSignal, squeeze(pathGains));
receivedData = step(hDemod, decData);

Compute number of bit errors in received data.

errors = biterr(data, receivedData);
fprintf(1, ['\nThere were %d errors in the received signal ' ...
        'out of %d bits transmitted\n'], errors, length(data));

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.

See Also

Was this topic helpful?