Combine inputs for received signals and channel estimate according to orthogonal spacetime block code (OSTBC)
MIMO
The OSTBC Combiner block combines the input signal (from all of the receive antennas) and the channel estimate signal to extract the soft information of the symbols that were encoded using an OSTBC. The input channel estimate may not be constant during each codeword block transmission and the combining algorithm uses only the estimate for the first symbol period per codeword block. A symbol demodulator or decoder would follow the Combiner block in a MIMO communications system.
The block conducts the combining operation for each symbol independently. The combining algorithm depends on the structure of the OSTBC. For more information, see the OSTBC Combining Algorithms section of this help page.
Along with the time and spatial domains for OSTBC transmission, the block supports an optional dimension, over which the combining calculation is independent. This dimension can be thought of as the frequency domain for OFDMbased applications. The following illustration indicates the supported dimensions for inputs and output of the OSTBC Combiner block.
The following table describes each variable for the block.
Variable  Description 

F  The additional dimension; typically the frequency dimension. The combining calculation is independent of this dimension. 
N  Number of transmit antennas. 
M  Number of receive antennas. 
T  Output symbol sequence length in time domain. 
R  Symbol rate of the code. 
Note: On the two inputs, T/R is the symbol sequence length in the time domain. 
F can be any positive integers. M can be 1 through 8, indicated by the Number of receive antennas parameter. N can be 2, 3 or 4, indicated by the Number of transmit antennas parameter. The time domain length T/R must be a multiple of the codeword block length (2 for Alamouti; 4 for all other OSTBC). For N = 2, T/R must be a multiple of 2. When N > 2, T/R must be a multiple of 4. R defaults to 1 for 2 antennas. R can be either $$\frac{3}{4}$$ or $$\frac{1}{2}$$ for more than 2 antennas.
The supported dimensions for the block depend upon the values of F and M. For one receive antenna (M = 1), the received signal input must be a column vector or a full 2–D matrix, depending on the value for F. The corresponding channel estimate input must be a full 2D or 3D matrix.
For more than one receive antenna (M > 1), the received signal input must be a full 2D or 3D matrix, depending on the value for F. Correspondingly, the channel estimate input must be a 3D or 4D matrix, depending on the value for F.
To understand the block's dimension propagation, refer to the following table.
Input 1 (Received Signal)  Input 2 (Channel Estimate)  Output  

F = 1 and M = 1  Column vector  2D  Column vector 
F = 1 and M > 1  2D  3D  Column vector 
F > 1 and M = 1  2D  3D  2D 
F > 1 and M > 1  3D  4D  2D 
For information about the data types each block port supports, see the Supported Data Type table on this page. The output signal inherits the data type from the inputs. The block supports different fixedpoint properties for the two inputs. For ﬁxedpoint signals, the output word length and fractional length depend on the block's mask parameter settings. See FixedPoint Signals for more information about fixedpoint data propagation of this block.
The output inherits the frameness of the received signal input. For either column vector or full 2D matrix input signal, the input can be either framebased or samplebased. A 3–D or 4–D matrix input signal must have samplebased input.
The OSTBC Combiner block supports five different OSTBC combining computation algorithms. Depending on the selection for Rate and Number of transmit antennas, you can select one of the algorithms shown in the following table.
Transmit Antenna  Rate  Computational Algorithm per Codeword Block Length 

2  1  $$\left(\begin{array}{c}{\widehat{s}}_{1}\\ {\widehat{s}}_{2}\end{array}\right)=\frac{1}{{}^{{\Vert H\Vert}^{2}}}{\displaystyle \sum _{j=1}^{M}\left(\begin{array}{c}{h}_{1,j}^{*}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{1,j}+{h}_{2}{,}_{j}r{\text{\hspace{0.17em}}}_{2,j}^{*}\\ {h}_{2,}^{*}{}_{j}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{1,j}{h}_{1}{,}_{j}r{\text{\hspace{0.17em}}}_{2,j}^{*}\end{array}\right)}\cdot $$ 
3  1/2  $$\left(\begin{array}{c}{\widehat{s}}_{1}\\ {\widehat{s}}_{2}\end{array}\right)=\frac{1}{{}^{{\Vert H\Vert}^{2}}}{\displaystyle \sum _{j=1}^{M}\left(\begin{array}{c}{h}_{1,j}^{*}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{1,j}+{h}_{2,j}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{2,j}^{*}+{h}_{3,}^{*}{}_{j}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{3,j}\\ {h}_{2,}^{*}{}_{j}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{1,j}{h}_{1,j\text{\hspace{0.17em}}}r{\text{\hspace{0.17em}}}_{2,j}^{*}{h}_{3,j}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{4,j}^{*}\end{array}\right)}\cdot $$ 
3  3/4  $$\left(\begin{array}{c}{\widehat{s}}_{1}\\ \begin{array}{l}{\widehat{s}}_{2}\\ {\widehat{s}}_{3}\end{array}\end{array}\right)=\frac{1}{{}^{{\Vert H\Vert}^{2}}}{\displaystyle \sum _{j=1}^{M}\left(\begin{array}{c}{h}_{1,j}^{*}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{1,j}+{h}_{2,j}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{2,j}^{*}{h}_{3,j}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{3,j}^{*}\\ {h}_{2,}^{*}{}_{j}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{1,j}{h}_{1,j\text{\hspace{0.17em}}}r{\text{\hspace{0.17em}}}_{2,j}^{*}{h}_{3,j}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{4,j}^{*}\\ {h}_{3,j}^{*}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{1,j}+{h}_{1,j}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{3,j}^{*}+{h}_{2,j}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{4,j}^{*}\end{array}\right)}\cdot $$ 
4  1/2  $$\left(\begin{array}{c}{\widehat{s}}_{1}\\ {\widehat{s}}_{2}\end{array}\right)=\frac{1}{{}^{{\Vert H\Vert}^{2}}}{\displaystyle \sum _{j=1}^{M}\left(\begin{array}{c}{h}_{1,j}^{*}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{1,j}+{h}_{2,j}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{2,j}^{*}+{h}_{3,j}^{*}{}_{3,j}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{3,j}+{h}_{4,j}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{4,j}^{*}\\ {h}_{2,}^{*}{}_{j}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{1,j}{h}_{1,j\text{\hspace{0.17em}}}r{\text{\hspace{0.17em}}}_{2,j}^{*}+{h}_{4,j}^{*}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{3,j}{h}_{3,j}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{4,j}^{*}\end{array}\right)}\cdot $$ 
4  3/4  $$\left(\begin{array}{c}{\widehat{s}}_{1}\\ \begin{array}{l}{\widehat{s}}_{2}\\ {\widehat{s}}_{3}\end{array}\end{array}\right)=\frac{1}{{}^{{\Vert H\Vert}^{2}}}{\displaystyle \sum _{j=1}^{M}\left(\begin{array}{c}{h}_{1,j}^{*}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{1,j}+{h}_{2,j}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{2,j}^{*}{h}_{3,j}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{3,j}^{*}{h}_{4}^{*}{}_{,j}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{4j}\\ {h}_{2,}^{*}{}_{j\text{\hspace{0.17em}}}r{\text{\hspace{0.17em}}}_{1j}{h}_{1,j\text{\hspace{0.17em}}}r{\text{\hspace{0.17em}}}_{2,j}^{*}+{h}_{4}^{*}{}_{,j}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{3,j}{h}_{3,j}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{4,j}^{*}\\ {h}_{3,}^{*}{}_{j\text{\hspace{0.17em}}}r{\text{\hspace{0.17em}}}_{1j}+{h}_{4,j}^{*}{}_{\text{\hspace{0.17em}}}r{\text{\hspace{0.17em}}}_{2,j}+{h}_{1,j}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{3,j}^{*}+{h}_{2,j}\text{\hspace{0.17em}}r{\text{\hspace{0.17em}}}_{4,j}^{*}\end{array}\right)}\cdot $$ 
$${\widehat{s}}_{k}$$ represents the estimated kth symbol in the OSTBC codeword matrix. h_{ij} represents the estimate for the channel from the ith transmit antenna and the jth receive antenna. The values of i and j can range from 1 to N (the number of transmit antennas) and to M (the number of receive antennas) respectively. r_{lj} represents the lth symbol at the jth receive antenna per codeword block. The value of l can range from 1 to the codeword block length. $${\Vert H\Vert}^{2}$$ represents the summation of channel power per link, i.e., $${\Vert H\Vert}^{2}={{\displaystyle \sum _{i=1}^{N}{\displaystyle \sum _{j=1}^{M}\Vert {h}_{ij}\Vert}}}^{2}$$
Use the following formula for $${\widehat{s}}_{1}$$ for Alamouti code with 1 receive antenna to highlight the data types used for fixedpoint signals.
$${\widehat{s}}_{1}=\frac{{h}_{1,1,}^{*}\text{\hspace{0.17em}}{r}_{1,1}+{h}_{2,1,}r{\text{\hspace{0.17em}}}_{2,1}^{*}}{{}^{{\Vert H\Vert}^{2}}}=\frac{{h}_{1,1,}^{*}\text{\hspace{0.17em}}{r}_{1,1}+{h}_{2,1,}r{\text{\hspace{0.17em}}}_{2,1}^{*}}{{}^{{h}_{1,1}{h}_{1,1,}^{*}+\text{\hspace{0.17em}}{h}_{2,1,}{h}_{2,1}^{*}}}$$
In this equation, the data types for Product output and Accumulator correspond to the product and summation in the numerator. Similarly, the types for Energy product output and Energy accumulator correspond to the product and summation in the denominator.
Signal Flow Diagram for s_{1} Combining Calculation of Alamouti Code with One Receive Antenna
The following formula shows the data types used within the OSTBC
Combiner block for fixedpoint signals for more than one receive antenna
for Alamouti code, where M represents the number
of receive antennas.
$${\widehat{s}}_{1}=\frac{{h}_{1,1,}^{*}\text{\hspace{0.17em}}{r}_{1,1}+{h}_{2,1,}r{\text{\hspace{0.17em}}}_{2,1}^{*}+{h}_{1,2}^{*}\text{\hspace{0.17em}}{r}_{1,2}+{h}_{2,2}r{\text{\hspace{0.17em}}}_{2,2}^{*}+\mathrm{...}+{h}_{1,M,}^{*}\text{\hspace{0.17em}}{r}_{1,M}+{h}_{2,M\text{\hspace{0.17em}}}r{\text{\hspace{0.17em}}}_{2,M}^{*}}{{h}_{1,1}{h}_{1,1}^{*}+\text{\hspace{0.17em}}{h}_{2,1}{h}_{2,1}^{*}+{h}_{1,2}{h}_{1,2}^{*}+\text{\hspace{0.17em}}{h}_{2,2}{h}_{2,2}^{*}+\mathrm{...}+{h}_{1,M}{h}_{1,M}^{*}+\text{\hspace{0.17em}}{h}_{2,M,}{h}_{2,M}^{*}}$$
Signal Flow Diagram for Complex Multiply of a + ib and c + id
For Binary point scaling, you can not specify WL_{p} and FL_{p}. Instead, the blocks determine these values implicitly from WL_{a} and FL_{a}
The Internal Rule for Product output and Energy product output are:
When you select Inherit via internal
rule
, the internal rule (DSP System Toolbox) determines WL_{p} and FL_{p}.
Therefore, WL_{a} = WL_{p} +
1 and FL_{a} = FL_{p}
For Binary point scaling
,
you specify WL_{a} and FL_{a}.
Therefore, WL_{p} = WL_{a} –1
and FL_{a} = FL_{p}.
For information on how the Internal Rule applies to the Accumulator and Energy Accumulator, see Inherit via Internal Rule (DSP System Toolbox) in the DSP System Toolbox™ User's Guide.
Sets the number of transmit antennas. The block supports 2, 3, or 4 transmit antennas. This value defaults to 2.
Sets the symbol rate of the code. You can specify either 3/4 or 1/2. This field only appears when you use more than 2 transmit antennas. This field defaults to $$\frac{3}{4}$$ for more than 2 transmit antennas. For 2 transmit antennas, there is no rate option and the implicit (default) rate defaults to 1.
The number of antennas the block uses to receive signal streams. The block supports from 1 to 8 receive antennas. This value defaults to 1.
Sets the rounding mode for fixedpoint calculations. The block uses the rounding mode if a value cannot be represented exactly by the specified data type and scaling. When this occurs, the value is rounded to a representable number. For more information refer to Rounding (FixedPoint Designer) in FixedPoint Designer™.
Sets the overflow mode for fixedpoint calculations. Use this parameter to specify the method to be used if the magnitude of a fixedpoint calculation result does not fit into the range of the data type and scaling that stores the result. For more information refer to Precision and Range (DSP System Toolbox) in the Precision and Range (DSP System Toolbox) section of the DSP System Toolbox User's Guide.
Complex product in the numerator for the diversity combining. For more information refer to the FixedPoint Signals section of this help page.
Summation in the numerator for the diversity combining.
Fixedpoint Communications System Toolbox™ blocks that must hold summation results for further calculation usually allow you to specify the data type and scaling of the accumulator. Most such blocks cast to the accumulator data type prior to summation:
Use the Accumulator—Mode parameter to specify how you would like to designate the accumulator word and fraction lengths:
When you select Inherit via internal
rule
, the accumulator output word and fraction lengths
are automatically calculated for you. Refer to Inherit
via Internal Rule (DSP System Toolbox) for more information.
When you select Same as product output
,
these characteristics match those of the product output.
When you select Same as input
,
these characteristics match those of the first input to the block.
When you select Binary point scaling
,
you are able to enter the word length and the fraction length of the
accumulator, in bits.
When you select Slope and bias scaling
,
you are able to enter the word length, in bits, and the slope of the
accumulator. The bias of all signals in DSP System Toolbox software
is zero.
Complex product in the denominator for calculating total energy in the MIMO channel .
Summation in the denominator for calculating total energy in the MIMO channel.
Normalized diversity combining by total energy in the MIMO channel.
Port  Supported Data Types 

Rx 

cEst 

Out 

For an example of this block in use, see OSTBC Over 3x2 Rayleigh Fading Channel in the Communications System Toolbox documentation. The model shows the use of a rate ¾ OSTBC for 3 transmit and 2 receive antennas with BPSK modulation using independent fading links and AWGN.
You can also see the block in the Concatenated OSTBC with TCM
example by typing commtcmostbc
or
the IEEE 802.16–2004 OFDM PHY Link, Including SpaceTime Block
Coding example by typing commwman80216dstbc
at
the MATLAB^{®} command line.