text:
\section{Introduction}

\indent Space-time codes (STC) in multi-input multi-output (MIMO) systems have been extensively studied for their
ability to provide transmit diversity gain and spatial multiplexing gain \cite{Zheng}. Space-time
trellis codes (STTC) \cite{Tarokh_stc} and space-time block codes (STBC) \cite{Alamouti,Tarokh_ostbc,Ganesan_ostbc,Lu_ostbc,Tirkkonen,Jafarkhani,Yuen_book,Dao_4gp,Rajan_multigp,xia_linear} are able to provide diversity gain and have code rate limited by 1. On the other hand, Bell Labs layered space-time (BLAST) system \cite{Foschini}, high-rate linear dispersion (LD) codes \cite{Hassibi}, Golden code \cite{Belfiore}, perfect codes \cite{Oggier}, PS-SR code\cite{Rajan4x2}, etc., have code rate $>1$ and are able to provide multiplexing gain (the latter four have diversity gain too).

To achieve higher code rates with low joint-decoding complexity, many STBC with code rate $\leq1$ have been designed to be group-decodable (quasi-orthogonal) \cite{Tirkkonen,Jafarkhani,Yuen_book,Dao_4gp,Rajan_multigp}. In contrast, there were much fewer designs of group-decodable STBC with code rate $>1$ (high-rate STBC). In \cite{Yuen_2gp}, square 2-group-decodable STBC of code rate 1.25 for 4 transmit antennas were obtained by computer search; In \cite{Rajan_2gp}, 2-group-decodable STBC of code rate $2^{m-2}+\frac{1}{2^m}$ for $2^m$ ($m\geq 2$) transmit antennas were constructed. In \cite{Ren_de}, it was also shown that the group-decodable code structure is beneficial to diversity-embedded (DE) space-time codes as it avoids interference between the different diversity layers in the DE codes and helps to guarantee the designed diversity levels.

In this paper, group-decodable high-rate STBC with arbitrary number of transmit antennas and code lengths is considered, then systematic methods to construct them with full symbol-wise diversity are presented. Their maximum achievable code rate and decoding complexity are analyzed. Specific code examples are constructed and simulated.

The rest of this paper is organized as follows. High-rate STBC with code rate $>1$ will be abbreviated as STBC. In Section II, the system model is described and group-decodable STBC is
defined. Unbalanced 2-group-decodable STBC and balanced
2-group-decodable STBC are constructed systematically in Section III
and Section IV, respectively. Comparisons of the decoding complexity
and BER performance are shown in Section V. Finally, this paper is
concluded in Section VI.

In this paper, bold lower case and upper case letters
denote vectors and matrices (sets), respectively; $\mathbb{R}$ and
$\mathbb{C}$ denote the real and the complex number field, respectively;
$(\cdot)^R$ and $(\cdot)^I$ stand for the real and the imaginary part
of a complex vector or matrix, respectively; $[\cdot]^*$,
$[\cdot]^T$, $[\cdot]^H$ and $\| \cdot \|$ denote the complex
conjugate, the transpose, the complex conjugate transpose and the
Frobenius norm of a matrix, respectively; $dim(\cdot)$ and
$rank(\cdot)$ represent dimension of a vector/matrix space and rank
of a matrix, respectively; $\textbf{I}$ denotes an identity matrix.

\section{System Model}
\subsection{Signal Model}
We consider a space-time block coding system employing
$N$ transmit antennas and $M$ receive antennas. The transmitted
signal sequences are partitioned into independent time blocks for
transmission over $T$ symbol durations using STBC matrix $\textbf{X}$
of size $T\times N$. Following the signal model in \cite{Hassibi},
$\textbf{X}$ can be denoted as:
\begin{equation}\label{LSTBC}
\textbf{X}_{T\times N}=\sum^L_{l=1}{s_{l}\textbf{C}_{l}}
\end{equation}
where $s_l\in \mathbb{R}$ are real valued symbols representing the real and imaginary components of complex constellation symbols, $\textbf{C}_l\in \mathbb{C}^{T\times N}$ are called dispersion
matrices. Thus, the code rate is $\frac{L}{2T}$
considering complex symbol transmission. The average energy of the
code matrix is constrained to $\mathcal {E}_\textbf{X}=\mathbb{E}\|\textbf{X}\|^2=T$.

The received signals $\tilde{r}_{tm}$ of the $m$th receive
antenna at time $t$ can be arranged in a $T\times M$ matrix
$ [\tilde{\textbf{r}}_1~\tilde{\textbf{r}}_2~\cdots~\tilde{\textbf{r}}_M]=
[\tilde{r}_{tm}]$. Thus, the transmit-receive signal relationship can be presented as:
\begin{equation}\label{R_XH}
[\tilde{\textbf{r}}_1~\tilde{\textbf{r}}_2~\cdots~\tilde{\textbf{r}}_M]
=\sqrt{\rho}\textbf{X}\tilde{\textbf{H}}+\tilde{\textbf{Z}}
\end{equation}
where $\tilde{\textbf{H}}_{N\times M} =
[\tilde{\textbf{h}}_1~\tilde{\textbf{h}}_2~\cdots~\tilde{\textbf{h}}_M]$
is the channel matrix with independent entries $\tilde{h}_{nm}$; $\tilde{\textbf{Z}}_{T\times M}
=[\tilde{\textbf{z}}_1~\tilde{\textbf{z}}_2~\cdots$ $\tilde{\textbf{z}}_M]=[\tilde{z}_{tm}]$ is the additive noise matrix with independently, identically
distributed (i.i.d.) $\mathcal {CN}(0,1)$ entries $\tilde{z}_{tm}$; $\rho$ is the average
signal-to-noise ratio (SNR) at each receive antenna. The received
signal can also be rewritten as \cite{Hassibi}:
\begin{equation}\label{r_Hs}
\textbf{r}=\sqrt{\rho} \textbf{H}\textbf{s}+\textbf{z}
\end{equation}
where
\begin{equation*}
\begin{split}
 &\textbf{r}=\left[
\begin{array}{cccccccc}
    \tilde{\textbf{r}}^R_1\\
    \tilde{\textbf{r}}^I_1\\
    \vdots\\
    \tilde{\textbf{r}}^R_{M}\\
    \tilde{\textbf{r}}^I_{M}
\end{array}
\right],~
 \bar{\textbf{h}}=\left[
\begin{array}{cccccccc}
    \tilde{\textbf{h}}^R_{1}\\
    \tilde{\textbf{h}}^I_{1}\\
    \vdots \\
    \tilde{\textbf{h}}^R_{M}\\
    \tilde{\textbf{h}}^I_{M}
\end{array}
\right],~\textbf{s}=\left[
\begin{array}{cccccccc}
    s_1\\
    s_2\\
    \vdots\\
    s_L
\end{array}
\right],~\textbf{z}=\left[
\begin{array}{cccccccc}
    \tilde{\textbf{z}} ^R_1\\
    \tilde{\textbf{z}} ^I_1\\
    \vdots\\
    \tilde{\textbf{z}} ^R_{M}\\
    \tilde{\textbf{z}} ^I_{M}
\end{array}
\right],
\end{split}
\end{equation*}
\begin{equation*}
\begin{split}
&\textbf{H}=\left[\textbf{h}_1~\textbf{h}_2~\cdots~\textbf{h}_L\right]=\left[
\begin{array}{cccccccc}
    \mathscr{C}_1\bar{\textbf{h}} &\mathscr{C}_2\bar{\textbf{h}}  &\cdots  &\mathscr{C}_L\bar{\textbf{h}}
\end{array}
\right],
\\&
\mathscr{C}_l=\left[
\begin{array}{cccccccc}
    \mathcal {C}_l   &   \textbf{0} & \cdots & \textbf{0}\\
    \textbf{0}   &   \mathcal {C}_l & \cdots & \textbf{0}\\
    \vdots & \vdots & \ddots & \vdots \\
    \textbf{0} & \textbf{0} & \cdots & \mathcal {C}_l
\end{array}
\right]_{2TM\times 2NM},~\mathcal {C}_l=\left[
\begin{array}{cccccccc}
    \textbf{C}^R_l   &   -\textbf{C}^I_l\\
    \textbf{C}^I_l   &   \textbf{C}^R_l
\end{array}
\right]_{2T\times 2N}
\end{split}
\end{equation*}
and $l=1,2,\cdots,L$.

The maximum likelihood (ML) decoding of STBC is to find the solution
$\hat{\textbf{s}}$ so that
\begin{equation}\label{Ml_metric}
\hat{\textbf{s}}=arg\underset{\textbf{s}}{min}\|\textbf{r}-\sqrt{\rho}
\textbf{H}\textbf{s}\|^2
\end{equation}

To avoid rank deficiency at the decoder, $rank(\textbf{H})=L$ is
required, which means that $\textbf{H}$ should be \textquoteleft
\textquoteleft tall\textquoteright\textquoteright, i.e., $L\leq
2TN_r$\cite{Hassibi}\cite{Yuen_book}, which implies that the
receiver antenna number satisfies $N_r\geq \frac{L}{2T}$.

\subsection{$\Gamma$-Group-Decodable STBC}

Firstly, \emph{linear independence of
matrices} is defined as follows:

\begin{definition}\label{rank_matrix}
\emph{The matrices $\textbf{A}_1,\textbf{A}_2,\cdots,\textbf{A}_L$
are said to be linearly independent if no nontrivial linear
combination of them is equal to zero. In other words, with
$\alpha_i\in \mathbb{C}~(i=1,\cdots,L)$
\begin{equation*}
\alpha_1\textbf{A}_1+\alpha_2\textbf{A}_2+\cdots+\alpha_L\textbf{A}_L=\textbf{0}
\end{equation*}
only when $\alpha_1=\alpha_2=\cdots=\alpha_L=0$.}
\end{definition}

It is easy to show that the linear independence among
$\textbf{A}_1,\textbf{A}_2,\cdots,\textbf{A}_L$ is equivalent to the
linear independence among vectors
$\bar{\textbf{a}}_1,\bar{\textbf{a}}_2,\cdots,\bar{\textbf{a}}_L$,
where $\bar{\textbf{a}}_i=g(\textbf{A}_i)$ with $i=1,2,\cdots,L$, and $g$ is the
matrix-to-vector mapping function $\tqbinom{a~c}{b~d}\xrightarrow{g}[a~b~c~d]^T$.

The main idea of group-decodable STBC is to divide the $L$
real transmitted symbols embedded in a code matrix into several orthogonal
groups such that after linear channel matched filtering, the ML
detection metric of the transmitted symbols can be decoupled into
independent submetrics, each containing a smaller group of symbols. Assume that the transmitted symbols can be
separated into $\Gamma$ groups and each group has $L_i$ symbols,
then $\sum^\Gamma_{i=1}{L_i}=L$. Let the set of indexes of symbols
in the $i$th group be denoted as $\Theta_i$. For an STBC to be
$\Gamma$-group-decodable, two conditions should be satisfied:

(i) $\textbf{h}^T_p\textbf{h}_q=0$ where $p\in
\Theta_{i_1},~q\in \Theta_{i_2}\emph{\emph{ and }}i_1\neq i_2$;

(ii) $rank(\textbf{H}_i)=L_i$ where
$\textbf{H}_i=[\textbf{h}_{i_1}~\textbf{h}_{i_2}~\cdots~\textbf{h}_{i_{L_i}}]$,
$i_k\in \Theta_i,~k=1,2,\cdots,L_i\emph{\emph{ and }}i=1,2,\cdots,\Gamma$.

Condition (i) means that the STBC is group-decodable and
condition (ii) guarantees that no decoder of any group is rank
deficient.

To satisfy the condition (i), \emph{Yuen} et al. \cite{Yuen_2gp} have
established a necessary and sufficient condition as follows:

\begin{theorem}[Quasi-Orthogonality Constraint,~QOC]\label{qoc_th}
\emph{The necessary and sufficient condition to make $s_p$ and $s_q~(p\neq q)$ in the STBC matrix (\ref{LSTBC}) to be orthogonal (i.e., to achieve $\textbf{h}^T_p\textbf{h}_q=0$) is
\begin{equation}\label{qoc}
\textbf{C}^H_p\textbf{C}_q=-\textbf{C}^H_q\textbf{C}_p.
\end{equation}}
\end{theorem}

Regarding the condition (ii), $rank(\textbf{H}_i)=L_i$
implies that $\textbf{h}_{i_1},\textbf{h}_{i_2},\cdots,\textbf{h}_{i_{L_i}}$
should be linearly independent.

\begin{theorem}\label{th_independence}
\emph{The necessary and sufficient condition for
$\textbf{h}_{i_1},\textbf{h}_{i_2},\cdots,\textbf{h}_{i_{L_i}}$ to
be linearly independent is that
$\tqbinom{\textbf{C}^R_{i_1}}{\textbf{C}^I_{i_1}}$, $
\tqbinom{\textbf{C}^R_{i_2}}{\textbf{C}^I_{i_2}},\cdots,$ $
\tqbinom{\textbf{C}^R_{i_{L_i}}}{\textbf{C}^I_{i_{L_i}}}$ must be
linearly independent.}
\end{theorem}

The proof of Theorem \ref{th_independence} is given in Appendix \ref{proofindependence}.

From the above, a formal definition of $\Gamma$-group-decodable STBC can be presented as:

\begin{definition}\label{group_decodable_STBC}
\emph{An STBC is said to be $\Gamma$-group-decodable if}

\emph{(i)
$\textbf{C}^H_p\textbf{C}_q=-\textbf{C}^H_q\textbf{C}_p,~\forall
p\in \Theta_{i_1},\forall q\in \Theta_{i_2},~{i_1}\neq i_2$;}

\emph{(ii)
$\tqbinom{\textbf{C}^R_{i_1}}{\textbf{C}^I_{i_1}},\cdots,
\tqbinom{\textbf{C}^R_{i_k}}{\textbf{C}^I_{i_k}},\cdots,
\tqbinom{\textbf{C}^R_{i_{L_i}}}{\textbf{C}^I_{i_{L_i}}}$ are
linearly independent where $i_k \in
\Theta_i,~k=1,2,\cdots,L_i,~i=1,2,\cdots,\Gamma$.}
\end{definition}

In this paper, we focus on 2-group-decodable STBC, i.e., $\Gamma=2$. For 2-group-decodable STBC, the total transmitted symbols $L=L_1+L_2$ where $L_1$ and $L_2$ are the number of symbols in the first group and second group, respectively. We will consider two cases.
The first case is $L_1=1$ and $L_2=L-1$ (a special case of $L_1\neq L_2$), called \emph{unbalanced}
2-group-decodable STBC;
the other case is $L_1=L_2=\frac{L}{2}$, called \emph{balanced}
2-group-decodable STBC. The former will be used to construct the
latter.

\section{Unbalanced 2-Group-Decodable STBC}
\subsection{Code Construction} \label{section_un_construction}

Considering the unbalanced 2-group-decodable STBC with
$L_1=1$ and $L_2=L-1$, we have
\begin{equation} \label{draft_eq_qoc}
\textbf{C}^H_1\textbf{C}_l=-\textbf{C}^H_l\textbf{C}_1,~(l=2,3,\cdots,L).
\end{equation}

For brevity, $\textbf{C}_1$ is simplified as
$\textbf{C}=[c_{tn}]$, and $\textbf{C}_l$ with $l\in\{2,3,\cdots ,L\}$ is represented by
$\textbf{Y}=[y_{tn}]$, $t=1,2,\cdots,T\emph{\emph{ and }}n=1,2,\cdots ,N$.
\begin{definition}
\emph{Symbol-wise diversity is denoted as the minimum rank of the dispersion matrices in an STBC\cite{Tirkkonen_symbolwisediversity}\cite{Hassibi}.}
\end{definition}

To achieve full symbol-wise diversity gain, $\textbf{C}$ is required to be full rank, i.e., $rank(\textbf{C})=\min(T,N)$. Then, (\ref{draft_eq_qoc}) can be written as
\begin{equation}\label{eq_draft}
\textbf{C}^H\textbf{Y}+\textbf{Y}^H\textbf{C}=\textbf{0}.
\end{equation}

It is easy to show that (\ref{eq_draft}) can be converted
into scalar equations as:
\begin{equation}\label{eq_dis}
\begin{split}
&\sum^{T}_{t=1}{c^R_{tn}y^R_{tn}+c^I_{tn}y^I_{tn}}=0\\
&\sum^{T}_{t=1}{c^R_{tn}y^R_{ti}+c^I_{tn}y^I_{ti}+c^R_{ti}y^R_{tn}+c^I_{ti}y^I_{tn}}=0\\
&\sum^{T}_{t=1}{c^I_{tn}y^R_{ti}-c^R_{tn}y^I_{ti}-c^I_{ti}y^R_{tn}+c^R_{ti}y^I_{tn}}=0
\end{split}
\end{equation}
where $n=1,2,\cdots, N$, $i=n+1,\cdots,N$. In turn, (\ref{eq_dis})
can be rewritten in matrix form as:
\begin{equation}\label{eq_matrix}
\mathcal {C}\bar{\textbf{y}}=\textbf{0}
\end{equation}
where $\mathcal {C}=f(\textbf{C})$ of size $N^2\times 2TN$ and
$\bar{\textbf{y}}=g(\tqbinom{\textbf{Y}^R}{\textbf{Y}^I})$ of size
$2TN\times 1$ with mapping functions $f$ and $g$ given in (\ref{Candy}),
$\mathbbm{c}_n=[c^R_{1n}~c^I_{1n}~c^R_{2n}~c^I_{2n}~\cdots~c^R_{Tn}~c^I_{Tn}]$ and $\mathbbm{c}'_n=[c^I_{1n}~-c^R_{1n}~c^I_{2n}~$
$-c^R_{2n}~\cdots~c^I_{Tn}~-c^R_{Tn}]$.

\begin{equation} \label{Candy}
\mathcal {C}=f(\textbf{C})=\left[
\begin{array}{ccccccccccccccccccccccccccc}
    \mathbbm{c}_1     &\textbf{0}   &\cdots &\cdots  &\cdots &\textbf{0} \\
    \textbf{0}       &\mathbbm{c}_2   &\textbf{0} &\cdots  &\cdots &\textbf{0} \\
    \vdots &\vdots  &\ddots    &\ddots &\ddots &\vdots  \\
    \textbf{0}        &\cdots &\cdots &\cdots &\textbf{0} &\mathbbm{c}_N\\
    \mathbbm{c}_2     &\mathbbm{c}_1    &\textbf{0}   &\textbf{0} &\cdots  &\textbf{0} \\
    \mathbbm{c}'_2    &-\mathbbm{c}'_1   &\textbf{0}  &\textbf{0} &\cdots  &\textbf{0} \\
    \mathbbm{c}_3     &\textbf{0}   &\mathbbm{c}_1    &\textbf{0} &\cdots  &\textbf{0} \\
    \mathbbm{c}'_3    &\textbf{0}   &-\mathbbm{c}'_1  &\textbf{0} &\cdots  &\textbf{0} \\
    \vdots &\vdots  &\ddots    &\ddots &\ddots &\vdots  \\
    \mathbbm{c}_N       &\textbf{0}   &\cdots &\cdots  &\textbf{0} &\mathbbm{c}_1  \\
    \mathbbm{c}'_N      &\textbf{0}   &\cdots &\cdots  &\textbf{0} &-\mathbbm{c}'_1 \\
    \textbf{0}      &\mathbbm{c}_3     &\mathbbm{c}_2    &\textbf{0}   &\cdots  &\textbf{0} \\
    \textbf{0}      &\mathbbm{c}'_3    &-\mathbbm{c}'_2   &\textbf{0}   &\cdots  &\textbf{0} \\
    \vdots &\vdots  &\vdots &\ddots    &\ddots &\vdots  \\
    \textbf{0}      &\mathbbm{c}_N       &\textbf{0}   &\cdots  &\textbf{0} &\mathbbm{c}_2   \\
    \textbf{0}      &\mathbbm{c}'_N     &\textbf{0}   &\cdots  &\textbf{0}  &-\mathbbm{c}'_2 \\
    \vdots &\vdots  &\vdots &\ddots    &\ddots &\vdots  \\
    \textbf{0}         &\cdots &\cdots  &\textbf{0} &\mathbbm{c}_{N}    &\mathbbm{c}_{N-1}   \\
    \textbf{0}        &\cdots &\cdots  &\textbf{0}  &\mathbbm{c}'_{N} &-\mathbbm{c}'_{N-1} \\
\end{array}
\right],~~\bar{\textbf{y}}=g(\tqbinom{\textbf{Y}^R}{\textbf{Y}^I})=\left[
\begin{array}{cccccc}
    y^R_{11} \\y^I_{11}\\\vdots\\
y^R_{T1}\\y^I_{T1}\\y^R_{12} \\y^I_{12}\\\vdots
\\y^R_{T2}\\y^I_{T2}\\\vdots \\y^R_{1N} \\y^I_{1N}\\\vdots \\y^R_{TN}\\y^I_{TN}
\end{array}
\right]
\end{equation}

As $\bar{\textbf{y}}$ is of size $2TN\times 1$, the solution
space of (\ref{eq_matrix}), $\{\bar{\textbf{y}}\}$, is of dimension
$2TN-rank(\mathcal {C})$. Let
$\bar{\textbf{y}}_1,\bar{\textbf{y}}_2,\cdots,$
$\bar{\textbf{y}}_{2TN-rank(\mathcal {C})}$ be the basis of
$\{\bar{\textbf{y}}\}$, which are linearly independent. Denoting
$g^{-1}$ as the inverse function of $g$ in (\ref{Candy}), linearly
independent matrices
$\tqbinom{\textbf{Y}^R_1}{\textbf{Y}^I_1},$
$\tqbinom{\textbf{Y}^R_2}{\textbf{Y}^I_2}, \cdots,
\tqbinom{\textbf{Y}^R_{2TN-rank(\mathcal
{C})}}{\textbf{Y}^I_{2TN-rank(\mathcal {C})}}$ can be obtained as $\tqbinom{\textbf{Y}^R_i}{\textbf{Y}^I_i}=g^{-1}(\bar{\textbf{y}}_i)$
with $i=1,2,\cdots,2TN-rank(\mathcal {C})$. From Definition \ref{group_decodable_STBC}, if $\textbf{Y}_1,\textbf{Y}_2,\cdots,\textbf{Y}_{2TN-rank(\mathcal
{C})}$ and $\textbf{C}$ in (\ref{eq_draft}) are used as the dispersion matrices, the resultant STBC will be an
unbalanced 2-group-decodable STBC of code rate $\frac{2TN-rank(\mathcal {C})+1}{2T}$ with 1 real symbol in the first
group and $2TN-rank(\mathcal {C})$ real symbols in the second group.

From the discussions above, we can summarize the systematic
construction of unbalanced 2-group-decodable STBC as follows:

Step 1: Pick a $T\times N$ matrix $\textbf{C}$ with full rank as
the dispersion matrix $\textbf{C}_1$ in the first group;

Step 2: Based on the matrix $\textbf{C}$, obtain the matrix
$\mathcal {C}=f(\textbf{C})$ following equation (\ref{Candy});

Step 3: Based on the matrix $\mathcal {C}$, solve equation (\ref{eq_matrix}) and obtain its
solution space represented as $\{\bar{\textbf{y}}_1,\bar{\textbf{y}}_2,$ $\cdots,\bar{\textbf{y}}_{2TN-rank(\mathcal
{C})}\}$ subject to the condition that all $\bar{\textbf{y}}_i$ ($i=1,\cdots,2TN-rank(\mathcal {C})$) lead to full-rank dispersion matrices in Step 4;

Step 4: Using the vector-to-matrix mapping function
$g^{-1}$ (inverse function of $g$ in (\ref{Candy})), obtain matrices
$\tqbinom{\textbf{Y}^R_i}{\textbf{Y}^I_i}=g^{-1}(\bar{\textbf{y}}_i)$
with $i=1,\cdots,2TN-rank(\mathcal {C})$. Using $\textbf{Y}_i=\textbf{Y}^R_i+j\textbf{Y}^I_i$ as the dispersion matrices in the second group, obtain the resultant 2-group-decodable STBC as
\begin{equation}\label{gp_STBC}
\textbf{X}=s_{1}\textbf{C}_{1}+\sum^{2TN-rank(\mathcal {C})+1}_{l=2}{s_{l}\textbf{Y}_{l-1}}
\end{equation}
where $s_1$ is in the first group, while $s_2$ to $s_{2TN-rank(\mathcal {C})+1}$ are in the second group;

Step 5: Use the constellation rotation technique \cite{Su} to optimize the proposed code. Since the code symbols are divided into mutually orthogonal groups, this constellation rotation can be done group by group.

\subsection{Code Rate} \label{sec_un_coderate}
Since the code rate of unbalanced 2-group-decodable STBC is
$\frac{2TN-rank(\mathcal {C})+1}{2T}$, its upper bound depends on
the lower bound of $rank(\mathcal {C})$. Regarding $rank(\mathcal
{C})$, we have the following theorem:
\begin{theorem}\label{rank_C_prop}
\emph{~\\}
\noindent
\emph{i) When $T\geq N$, i.e., $rank(\textbf{C})=N$, then
$\mathcal {C}$ in (\ref{eq_matrix}) is of full rank and
$rank(\mathcal {C})=N^2$;}

\noindent
\emph{ii) When $T<N$, i.e., $rank(\textbf{C})=T$, then the
lower bound of $rank(\mathcal {C})$ is $2TN-T^2$ and it is reached
when $\textbf{C}$ (after suitable permutations) takes the form of
$\left[\textbf{C}_{sub,T\times T}~\textbf{0}_{T\times
(N-T)}\right]$.}
\end{theorem}

The proof of Theorem \ref{rank_C_prop} is given in Appendix
\ref{proof_rank_C}. From Theorem \ref{rank_C_prop}, it can be deduced that there are $2TN-rank(\mathcal
{C})=2TN-N^2$ (when $T\geq N$) or $T^2$ (when $T< N$) dispersion matrices in the second
group. Then the following proposition on the maximum code rate of
unbalanced 2-group-decodable STBC can be obtained:
\begin{proposition}
\emph{For an unbalanced 2-group-decodable STBC for $N$ transmit
antennas over $T$ symbol durations, its maximum achievable code rate
is $\frac{2TN-N^2+1}{2T}$ for $T\geq N$, or $\frac{T^2+1}{2T}$ for
$T< N$. For the former, when $T\gg N$, the code rate
$\frac{2TN-N^2+1}{2T}=N-\frac{N^2-1}{2T}$ approaches $N$
asymptotically, i.e., the code approaches full rate.}
\end{proposition}
The code rate variation of the proposed unbalanced
2-group-decodable STBC as a function of $N$ and $T$ is shown in Fig.
\ref{Rate_un2groupSTBC}.
\begin{figure}[!t]
\centering
\includegraphics[width=3.4in]{Rate_un2groupSTBCnew.eps}
\caption{Code rates of unbalanced 2-group-decodable STBC for $N$
transmit antennas over $T$ symbol durations. For illustration purpose, $T=N,2N,3N\emph{\emph{ and }}4N$ are
shown.} \label{Rate_un2groupSTBC}
\end{figure}

\subsection{ML Decoding Complexity Order} \label{sec_un_complexity}
Clearly, the ML decoding complexity order of the proposed 2-group-decodable STBC is mainly decided

\noindent by that of the larger group. Following \cite{Biglieri}, the ML decoding complexity order $O$ can be shown as:
\begin{equation}\label{DC_order}
O=K\cdot M^{\frac{L_{max}-K+1}{2}}_s=K\cdot 2^{\frac{(L_{max}-K+1)b}{2R}}
\end{equation}
where $L_{max}$ denotes the number of real symbols (need not be orthogonal) in the largest group, $K$ denotes the number of orthogonal real symbols in that group ($K=1$ if the largest group is fully non-orthogonal), $M_s=2^{\frac{b}{R}}$ denotes the size of the signal constellation applied with transmission bit rate $b$ and STBC code rate $R$. For the proposed unbalanced 2-group-decodable STBC, $L_{max}=L_2=2TN-N^2$ (when $T\geq N$) or $T^2$ (when $T< N$), while $R=\frac{2TN-N^2+1}{2T}$ (when $T\geq N$) or $\frac{T^2+1}{2T}$ (when $T< N$).

\subsection{Code Examples }
\subsubsection{2 Transmit Antennas} \label{example_un_nt2}

In this subsection, we present a step-by-step example of the construction of an
unbalanced 2-group-decodable STBC for 4 transmit antennas over 2
symbol durations. This code can be used in 2 ways: (i) to form an unbalanced 2-group-decodable code for 2 transmit antennas; (ii) to construct a balanced 2-group-decodable code for 4 transmit antennas in Section \ref{example_b_nt4}.

Step 1: Pick a 2$\times$4 matrix $\textbf{C}_1$ with full rank (rank 2) as the dispersion matrix in the first group:
\begin{equation}\label{un_2x4_c}
\textbf{C}_1=\left[
\begin{array}{cccccccccc}
    1     &1    & 0 & 0 \\
    1     &-1   & 0 & 0  \\
\end{array}
\right]
\end{equation}
Note that $\textbf{C}_1$ satisfies Theorem \ref{rank_C_prop}(ii), hence it achieves the code rate bound.

Step 2: Based on $\textbf{C}_1$, obtain matrix $\mathcal {C}$ with $rank(\mathcal {C})=2TN-T^2=12$ from (\ref{Candy}):
\begin{equation*}
\mathcal{C}=f(\textbf{C}_1)={\small\left[
\begin{array}{ccccccccccccccccc}
    1  &0  &1  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0\\
    0  &0  &0  &0  &1  &0  &-1 &0  &0  &0  &0  &0  &0  &0  &0  &0\\
    0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0\\
    0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0\\
    1  &0  &-1 &0  &1  &0  &1  &0  &0  &0  &0  &0  &0  &0  &0  &0\\
    0  &-1 &0  &1  &0  &1  &0  &1  &0  &0  &0  &0  &0  &0  &0  &0\\
    0  &0  &0  &0  &0  &0  &0  &0  &1  &0  &1  &0  &0  &0  &0  &0\\
    0  &0  &0  &0  &0  &0  &0  &0  &0  &1  &0  &1  &0  &0  &0  &0\\
    0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &1  &0  &1  &0\\
    0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &1  &0  &1\\
    0  &0  &0  &0  &0  &0  &0  &0  &1  &0  &-1 &0  &0  &0  &0  &0\\
    0  &0  &0  &0  &0  &0  &0  &0  &0  &1  &0  &-1 &0  &0  &0  &0\\
    0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &1  &0  &-1 &0\\
    0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &1  &0  &-1\\
    0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0\\
    0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0  &0\\
\end{array}
\right]}
\end{equation*}

Step 3: Solve equation (\ref{eq_matrix}) with matrix $\mathcal {C}$, and obtain the solution space of dimension $T^2=4$ as:
\begin{equation*}
\bar{\textbf{y}}=k_1\bar{\textbf{y}}_1+k_2\bar{\textbf{y}}_2+k_3\bar{\textbf{y}}_3+k_4\bar{\textbf{y}}_4
=k_1{\small\left[
\begin{array}{ccccccccccccccccccc}
    -1 \\
    0  \\
    1  \\
    0  \\
    1  \\
    0  \\
    1  \\
    0 \\
    0 \\
    0  \\
    0  \\
    0  \\
    0  \\
    0  \\
    0  \\
    0 \\
\end{array}
\right]}+
 k_2{\small\left[
\begin{array}{ccccccccccccccccccc}
    0 \\
    1  \\
    0  \\
    1  \\
    0  \\
    -1  \\
    0  \\
    1 \\
    0 \\
    0  \\
    0  \\
    0  \\
    0  \\
    0  \\
    0  \\
    0 \\
\end{array}
\right]}+
 k_3{\small\left[
\begin{array}{ccccccccccccccccccc}
    0 \\
    1  \\
    0  \\
    -1  \\
    0  \\
    1  \\
    0  \\
    1 \\
    0 \\
    0  \\
    0  \\
    0  \\
    0  \\
    0  \\
    0  \\
    0 \\
\end{array}
\right]}+ k_4{\small\left[
\begin{array}{ccccccccccccccccccc}
    0 \\
    1  \\
    0  \\
    1  \\
    0  \\
    1  \\
    0  \\
    -1 \\
    0 \\
    0  \\
    0  \\
    0  \\
    0  \\
    0  \\
    0  \\
    0 \\
\end{array}
\right]}
\end{equation*}

Step 4: Under the vector-to-matrix mapping function
$g^{-1}$, obtain $\tqbinom{\textbf{Y}^R_i}{\textbf{Y}^I_i}=g^{-1}(\bar{\textbf{y}}_i)$ with $i=1,2,3\emph{\emph{ and }}4$ as:{\small
\begin{equation*}
\tqbinom{\textbf{Y}^R_1}{\textbf{Y}^I_1}=\left[
\begin{array}{cccccccccc}
    -1    &1    &0     &0\\
    1     &1    &0     &0\\
    0     &0    &0     &0\\
    0     &0    &0     &0\\
\end{array}
\right],~ \tqbinom{\textbf{Y}^R_2}{\textbf{Y}^I_2}=\left[
\begin{array}{cccccccccc}
    0     &0    &0     &0\\
    0     &0    &0     &0\\
    1     &-1   &0     &0\\
    1     &1   &0     &0 \\
\end{array}
\right],~ \tqbinom{\textbf{Y}^R_3}{\textbf{Y}^I_3}=\left[
\begin{array}{cccccccccc}
    0     &0    &0     &0\\
    0     &0   &0     &0 \\
    1     &1    &0     &0\\
    -1    &1    &0     &0\\
\end{array}
\right],~ \tqbinom{\textbf{Y}^R_4}{\textbf{Y}^I_4}=\left[
\begin{array}{cccccccccc}
    0     &0    &0     &0\\
    0     &0    &0     &0\\
    1     &1    &0     &0\\
    1     &-1   &0     &0\\
\end{array}
\right].
\end{equation*}}
So, we have $\textbf{Y}_i=\textbf{Y}^R_i+j\textbf{Y}^I_i$ as:
\begin{equation}\label{un_2x4_y}
\textbf{Y}_1={\small\left[
\begin{array}{cccccccccc}
    -1    &1    &0     &0\\
    1     &1    &0     &0\\
\end{array}
\right]},~ \textbf{Y}_2={\small\left[
\begin{array}{cccccccccc}
    j     &-j   &0     &0\\
    j     &j   &0     &0 \\
\end{array}
\right]},~ \textbf{Y}_3={\small\left[
\begin{array}{cccccccccc}
    j     &j    &0     &0\\
    -j    &j   &0     &0 \\
\end{array}
\right]},~ \textbf{Y}_4={\small\left[
\begin{array}{cccccccccc}
    j     &j    &0     &0\\
    j     &-j    &0     &0\\
\end{array}
\right]}.
\end{equation}
\noindent We emphasize that since (\ref{eq_matrix}) is under-determined, there will be many possible solutions of $\{\bar{\textbf{y}}_i\}$. Typically, we choose the set of $\{\bar{\textbf{y}}_i\}$ leading to
\begin{ventry}{$\bullet$}
\item[$\bullet$] full-rank dispersion matrices, in order to achieve full symbol-wise diversity
gain \cite{Tirkkonen_symbolwisediversity}\cite{Hassibi};
\item[$\bullet$]as many orthogonal dispersion matrices as possible,
in order to achieve a large K in (\ref{DC_order}).
\end{ventry}

Since the dispersion matrices $\textbf{C}_1$ in (\ref{un_2x4_c}) and $\textbf{Y}_1$ to $\textbf{Y}_4$ in (\ref{un_2x4_y}) transmit no information on the third and fourth antennas, so they can be reduced to the followings\footnote{The original $\textbf{C}_1$, $\textbf{Y}_1$ to $\textbf{Y}_4$ will be used in Section \ref{example_b_nt4} to construct a balanced 2-group-decodable code example.} without loss in code rate or diversity:
\begin{equation}\label{un_2x2_cy}
\textbf{C}_1=\left[
\begin{array}{cccccccccc}
    1     &1     \\
    1     &-1    \\
\end{array}
\right];~ \textbf{Y}_1=\left[
\begin{array}{cccccccccc}
    -1    &1   \\
    1     &1   \\
\end{array}
\right],~ \textbf{Y}_2=\left[
\begin{array}{cccccccccc}
    j     &-j   \\
    j     &j    \\
\end{array}
\right],~ \textbf{Y}_3=\left[
\begin{array}{cccccccccc}
    j     &j  \\
    -j    &j   \\
\end{array}
\right],~ \textbf{Y}_4=\left[
\begin{array}{cccccccccc}
    j     &j   \\
    j     &-j  \\
\end{array}
\right].
\end{equation}
Hence an unbalanced 2-group-decodable STBC with the dispersion matrices in (\ref{un_2x2_cy}) for 2 transmit antennas can be obtained as:
\begin{equation}\label{example_un_matrixnt2}
\textbf{X}_{\emph{\emph{un}},2}
=s_{1}\textbf{C}_{1}+\sum^{5}_{l=2}{s_{l}\textbf{Y}_{l-1}}
=\left[
\begin{array}{cccccccccc}
    s_1-s_2+js_3+js_4+js_5     & s_1+s_2-js_3+js_4+js_5 \\
    s_1+s_2+js_3-js_4+js_5     &-s_1+s_2+js_3+js_4-js_5 \\
\end{array}
\right]
\end{equation}
where $s_1$ is in the first group, while $s_2$ to $s_{5}$ are in the second group. Furthermore, $s_2$ to $s_{4}$ are orthogonal, which leads to $L_{max}=4$ and $K=3$ in the decoding complexity order formula (\ref{DC_order}) for this code. $\textbf{X}_{\emph{\emph{un}},2}$ has code rate $R=5/4$, hence, its decoding complexity order calculated following (\ref{DC_order}) is:
\begin{equation}\label{DC_order_un_matrixnt2}
O=K\cdot 2^{\frac{(L_{max}-K+1)b}{2R}}=3\cdot 2^{\frac{4b}{5}}.
\end{equation}

\subsubsection{4 Transmit Antennas}\label{example_un_nt4}

In this subsection, we present the code example of a
2-group-decodable STBC for 4 transmit antennas over 4 symbol
durations.

Step 1: Pick a 4$\times $4 matrix $\textbf{C}_1$ with rank 4 as the
dispersion matrix in the first group:

\begin{equation}\label{un_4x4_c}
\textbf{C}_1=\left[
\begin{array}{cccccccccc}
    1     &0    &0   &0   \\
    0     &1    &0   &0   \\
    0     &0    &1   &0   \\
    0     &0    &0   &1   \\
\end{array}
\right].
\end{equation}

Step 2-4: Since $T=N$, $2TN-N^2=16$
dispersion matrices can be obtained in the second group as:
{\small
\begin{equation*}
\begin{split}
\textbf{Y}_1&=\left[
\begin{array}{cccccccccc}
    0     &0    &-1   &0   \\
    0     &0    &0   &-1   \\
    1     &0    &0   &0    \\
    0     &1    &0   &0    \\
\end{array}
\right],~~\textbf{Y}_2=\left[
\begin{array}{cccccccccc}
    0     &0    &j   &0   \\
    0     &0    &0   &-j  \\
    j     &0    &0   &0   \\
    0     &-j    &0   &0  \\
\end{array}
\right],~\textbf{Y}_3=\left[
\begin{array}{cccccccccc}
    0     &0    &0   &1   \\
    0     &0    &-1   &0  \\
    0     &1    &0   &0   \\
    -1     &0    &0   &0  \\
\end{array}
\right],~\textbf{Y}_4=\left[
\begin{array}{cccccccccc}
    0     &0    &0   &j   \\
    0     &0    &j   &0   \\
    0     &j    &0   &0   \\
    j     &0    &0   &0   \\
\end{array}
\right],~\\
\end{split}
\end{equation*}
\begin{equation} \label{un_4x4_y}
\begin{split}
\textbf{Y}_5&=\left[
\begin{array}{cccccccccc}
    j     &0    &0   &0   \\
    0     &j    &0   &0   \\
    0     &0    &-j   &0  \\
    0     &0    &0   &-j  \\
\end{array}
\right],~~\textbf{Y}_6=\left[
\begin{array}{cccccccccc}
    0     &1    &0   &0   \\
    -1     &0    &0   &0  \\
    0     &0    &0   &1   \\
    0     &0    &-1   &0  \\
\end{array}
\right],~\textbf{Y}_7=\left[
\begin{array}{cccccccccc}
    0     &j    &0   &0   \\
    j     &0    &0   &0   \\
    0     &0    &0   &-j  \\
    0     &0    &-j   &0  \\
\end{array}
\right],~ \textbf{Y}_8=\left[
\begin{array}{cccccccccc}
    j     &0    &0   &0   \\
    0     &j    &0   &0   \\
    0     &0    &j  &0    \\
    0     &0    &0   &j   \\
\end{array}
\right],\\
\textbf{Y}_{9}&=\left[
\begin{array}{cccccccccc}
    0     &0    &1   &0   \\
    0     &0    &0   &-1  \\
    -1     &0    &0   &0  \\
    0     &1    &0   &0   \\
\end{array}
\right],
~\textbf{Y}_{10}=\left[
\begin{array}{cccccccccc}
    0     &0    &j   &0   \\
    0     &0    &0   &j   \\
    j     &0    &0   &0   \\
    0     &j    &0   &0   \\
\end{array}
\right],\textbf{Y}_{11}=\left[
\begin{array}{cccccccccc}
    j     &0    &0   &0   \\
    0     &-j    &0   &0  \\
    0     &0    &-j   &0  \\
    0     &0    &0   &j   \\
\end{array}
\right],\textbf{Y}_{12}=\left[
\begin{array}{cccccccccc}
    0     &0    &0   &1   \\
    0     &0    &1   &0   \\
    0     &-1    &0   &0  \\
    -1     &0    &0   &0  \\
\end{array}
\right],\\
\textbf{Y}_{13}&=\left[
\begin{array}{cccccccccc}
    0     &1    &0   &0   \\
    -1     &0    &0   &0   \\
    0     &0    &0   &-1    \\
    0     &0    &1   &0   \\
\end{array}
\right],~\textbf{Y}_{14}=\left[
\begin{array}{cccccccccc}
    0     &j    &0   &0   \\
    j     &0    &0   &0   \\
    0     &0    &0   &j    \\
    0     &0    &j   &0   \\
\end{array}
\right],\textbf{Y}_{15}=\left[
\begin{array}{cccccccccc}
    0     &0    &0   &j   \\
    0     &0    &-j   &0   \\
    0     &-j    &0   &0    \\
    j     &0    &0   &0   \\
\end{array}
\right],\textbf{Y}_{16}=\left[
\begin{array}{cccccccccc}
    j     &0    &0   &0   \\
    0     &-j    &0   &0   \\
    0     &0    &j   &0    \\
    0     &0    &0   &-j   \\
\end{array}
\right].
\end{split}
\end{equation}}

The resultant unbalanced 2-group-decodable STBC is:
\begin{equation} \label{example_un_matrixnt4}
\begin{split}
&\textbf{X}_{\emph{\emph{un,4}}}=s_{1}\textbf{C}_{1}+\sum^{17}_{l=2}{s_{l}\textbf{Y}_{l-1}}=\\
&{\small{\small
\left[
\begin{array}{cccccccccc}
 s_1+js_6+js_9+js_{12}+js_{17}         &s_{7}+js_{8}+s_{14}+js_{15}    & -s_{2}+js_{3}+s_{10}+js_{11}   & s_{4}+js_{5}+s_{13}+js_{16}   \\
-s_{7}+js_{8}-s_{14}+js_{15}  &s_1+js_6+js_9-js_{12}-js_{17}           &-s_{4}+js_{5}+s_{13}-js_{16}   & -s_{2}-js_{3}-s_{10}+js_{11}   \\
 s_{2}+js_{3}-s_{10}+js_{11}    & s_{4}+js_{5}-s_{13}-js_{16}   &s_1-js_6+js_9-js_{12}+js_{17}         & s_{7}-js_{8}-s_{14}+js_{15} \\
-s_{4}+js_{5}-s_{13}+js_{16}   &s_{2}-js_{3}+s_{10}+js_{11}     &-s_{7}-js_{8}+s_{14}+js_{15}   &s_1-js_6+js_9+js_{12}-js_{17}   \\
\end{array}
\right]}}
\end{split}
\end{equation}
where $s_1$ is in the first group, while $s_2$ to $s_{17}$ are in the second group. Furthermore, $s_2$ to $s_{6}$ are orthogonal, which leads to $L_{max}=16$ and $K=5$ in the decoding complexity order formula (\ref{DC_order}) for this code. $\textbf{X}_{\emph{\emph{un}},4}$ has code rate $R=17/8$, hence, its decoding complexity order calculated following (\ref{DC_order}) is:
\begin{equation}\label{DC_order_un_matrixnt4}
O=K\cdot 2^{\frac{(L_{max}-K+1)b}{2R}}=5\cdot 2^{\frac{48b}{17}}.
\end{equation}

\subsubsection{3 Time Slots}\label{example_un_t3}
In the 3GPP standardization effort, a 2-antenna STBC that fits into 3 time slots (instead of the typical 2 time slots) are desired due to peculiarity in the existing protocol \cite{3gpp}\cite{ALcode}. Our code construction framework is able to easily obtain a 2-group decodable STBC $\textbf{X}_{\emph{\emph{3gpp}}}$ to meet such atypical specifications, while achieving the maximum rate 3/2 and full symbol-wise diversity.
\begin{equation}\label{example_un_matrixt3}
\textbf{X}_{\emph{\emph{3gpp}}}=s_{1}\textbf{C}_{1}+\sum^{9}_{l=2}{s_{l}\textbf{C}_{l}}={\small{\small
\left[
\begin{array}{cccccccccc}
 s_1+js_2+js_5+js_{6}+js_{9}    &s_{3}+js_{4}+s_{7}+js_{8}    \\
-s_{3}+js_{4}-s_{7}+js_{8}      &s_1-js_2+js_5-js_{6}+js_{9}        \\
 s_{7}+js_{8}                   & s_{6}+js_{9}
\end{array}
\right]}}
\end{equation}
where $s_1$ is in the first group, $s_2$ to $s_{9}$ are in the second group, and
\begin{equation*}
\begin{split}
\textbf{C}_1&=\left[
\begin{array}{cccccccccc}
    1     &0    \\
    0     &1    \\
    0     &0    \\
\end{array}
\right];\\
\textbf{C}_2&=\left[
\begin{array}{cccccccccc}
    j     &0    \\
    0     &-j    \\
    0     &0    \\
\end{array}
\right],~\textbf{C}_3=\left[
\begin{array}{cccccccccc}
    0     &1    \\
    -1    &0    \\
    0     &0    \\
\end{array}
\right],~\textbf{C}_4=\left[
\begin{array}{cccccccccc}
    0     &j    \\
    j     &0    \\
    0     &0    \\
\end{array}
\right],~\textbf{C}_5=\left[
\begin{array}{cccccccccc}
    j     &0    \\
    0     &j    \\
    0     &0    \\
\end{array}
\right],~\\
\textbf{C}_6&=\left[
\begin{array}{cccccccccc}
    j     &0    \\
    0     &-j    \\
    0     &1    \\
\end{array}
\right],~\textbf{C}_7=\left[
\begin{array}{cccccccccc}
    0     &1    \\
    -1    &0    \\
    1     &0    \\
\end{array}
\right],~\textbf{C}_8=\left[
\begin{array}{cccccccccc}
    0     &j    \\
    j     &0    \\
    j     &0    \\
\end{array}
\right],~\textbf{C}_9=\left[
\begin{array}{cccccccccc}
    j     &0    \\
    0     &j    \\
    0     &j    \\
\end{array}
\right].\\
\end{split}
\end{equation*}
Furthermore, $s_2$ to $s_{4}$ are orthogonal, which leads to $L_{max}=8$ and $K=3$ in the decoding complexity order formula (\ref{DC_order}) for this code. $\textbf{X}_{\emph{\emph{3gpp}}}$ has code rate $R=3/2$, hence, its decoding complexity order calculated following (\ref{DC_order}) is:
\begin{equation}
O=K\cdot 2^{\frac{(L_{max}-K+1)b}{2R}}=3\cdot 2^{2b}.
\end{equation}

\section{Balanced 2-Group-Decodable STBC}
\subsection{Code Construction}
We now present a method of constructing balanced
2-group-decodable STBC for $N$ transmit antennas over $T$ ($T$ even) symbol
durations from two unbalanced 2-group-decodable STBC.
\begin{proposition}\label{balancedprop}
\emph{Suppose that
$\{\textbf{A}_1;\textbf{A}_2,\cdots,\textbf{A}_{L}\}$ and
$\{\textbf{B}_1;\textbf{B}_2,\cdots,$$\textbf{B}_{L}\}$ are the
dispersion matrices of two unbalanced 2-group-decodable
STBC for $N$ transmit antennas over $\frac{T}{2}$ symbol durations
where $\textbf{A}_1$ satisfies the QOC with
$\textbf{A}_2,\cdots,\textbf{A}_{L}$,~$\textbf{B}_1$ satisfies the
QOC with $\textbf{B}_2,\cdots,\textbf{B}_{L}$,
$\tqbinom{\textbf{A}^R_2}{\textbf{A}^I_2},\cdots,
\tqbinom{\textbf{A}^R_{L}}{\textbf{A}^I_{L}}$ are linearly
independent, and
$\tqbinom{\textbf{B}^R_2}{\textbf{B}^I_2},\cdots,
\tqbinom{\textbf{B}^R_{L}}{\textbf{B}^I_{L}}$ are linearly
independent too. Let
\begin{equation*}
\begin{split}
&\{\textbf{U}_1,\textbf{U}_2,\cdots ,\textbf{U}_{L}\}
\left\{\left[
\begin{array}{cccc}
    \textbf{A}_2      \\
    \textbf{B}_1 \\
\end{array}
\right],\cdots ,\left[
\begin{array}{cccc}
    \textbf{A}_{L}    \\
    \textbf{B}_1 \\
\end{array}
\right], \left[
\begin{array}{cccc}
    \textbf{A}_i     \\
    -\textbf{B}_1 \\
\end{array}
\right]\right\},
\end{split}
\end{equation*}
\begin{equation*}
\begin{split}
&\{\textbf{V}_1,\textbf{V}_2,\cdots ,\textbf{V}_{L} \}=
\left\{\left[
\begin{array}{cccc}
    \textbf{A}_1      \\
    \textbf{B}_2 \\
\end{array}
\right],\cdots ,\left[
\begin{array}{cccc}
    \textbf{A}_1      \\
    \textbf{B}_{L} \\
\end{array}
\right], \left[
\begin{array}{cccc}
    -\textbf{A}_1      \\
    \textbf{B}_{k} \\
\end{array}
\right]\right\},
\end{split}
\end{equation*}
where $i,k\in \{2,3,\cdots,L\}$. Then, the matrices
$\textbf{U}_1,\textbf{U}_2,$ $\cdots,\textbf{U}_{L}$ satisfy the
QOC with $\textbf{V}_1,\textbf{V}_2,\cdots,\textbf{V}_{L}$;
$\tqbinom{\textbf{U}^R_1}{\textbf{U}^I_1},$ $\cdots,
\tqbinom{\textbf{U}^R_{L}}{\textbf{U}^I_{L}}$ are linearly
independent, and
$\tqbinom{\textbf{V}^R_1}{\textbf{V}^I_1},\cdots,
\tqbinom{\textbf{V}^R_{L}}{\textbf{V}^I_{L}}$ are linearly
independent too. Note that the
$\{\textbf{A}_1;\textbf{A}_2,\cdots,\textbf{A}_{L}\}$ and
$\{\textbf{B}_1;\textbf{B}_2,\cdots,$$\textbf{B}_{L}\}$ can be the
same or different.}
\end{proposition}
Based on Definition \ref{group_decodable_STBC},
$\{\textbf{U}_1,\textbf{U}_2,\cdots,\textbf{U}_{L}\}$ and
$\{\textbf{V}_1,$ $\textbf{V}_2,\cdots,\textbf{V}_{L}\}$ in
Proposition \ref{balancedprop} can be applied as the dispersion
matrices of a balanced 2-group decodable STBC.

\begin{figure}[!t]
\centering
\includegraphics[width=3.4in]{Rate_b2groupSTBCnew.eps}
\caption{Code rates of balanced 2-group-decodable STBC for $N$
transmit antennas over $T$ symbol durations constructed following Proposition
\ref{balancedprop}. For illustration purpose, $T=N,2N,3N\emph{\emph{ and }}4N$ are shown.} \label{Rate_b2groupSTBC}
\end{figure}

\subsection{Code Rate}
\begin{proposition}
\emph{For the balanced 2-group-decodable STBC for $N$ transmit
antennas over $T$ (even) symbol durations constructed following Proposition
\ref{balancedprop}, its code rate can approach $\frac{TN-N^2+1}{T}$ for $T\geq 2N$, or $\frac{T^2+4}{4T}$ for
$T<2N$. For the former, when $T\gg N$, the code rate
$\frac{TN-N^2+1}{T}$ approaches $N$
asymptotically, i.e., the code approaches full rate.}
\end{proposition}
\begin{IEEEproof}
For the dispersion matrices $\textbf{A}_l$ and
$\textbf{B}_l~(l=1,\cdots,L)$ in Proposition \ref{balancedprop}, we
have shown in Section \ref{sec_un_coderate} that the maximum achievable $L$ is
$2\left(\frac{T}{2}\right)N-N^2+1$ (when $\frac{T}{2}\geq N$) or $\left(\frac{T}{2}\right)^2+1$ (when $\frac{T}{2}<N$). Therefore, the balanced 2-group-decodable STBC constructed from Proposition \ref{balancedprop} is of code rate
$\frac{L+L}{2T}=\frac{TN-N^2+1}{T}$ (when $\frac{T}{2}\geq N$) or $\frac{T^2+4}{4T}$ (when $\frac{T}{2}<N$, including $T=N$).

For the former, when $T\gg N$, the code rate $\frac{TN-N^2+1}{T}=N-\frac{N^2-1}{T}$ approaches $N$ asymptotically, i.e., the code approaches full rate.
\end{IEEEproof}

The code rate variation of the proposed balanced 2-group-decodable STBC as a function of $N$ and $T$ is shown in Fig. \ref{Rate_b2groupSTBC}. Note that the 2-group-decodable STBC proposed in \cite{Rajan_2gp} supports $T=N$, $N=2^m~(m\geq2)$ transmit antennas, and code rate $2^{m-2}+\frac{1}{2^m}$. They are indicated as big square markers in Fig. \ref{Rate_b2groupSTBC}. Clearly, our proposed construction is more scalable in code length, transmit antennas number and code rate.

\subsection{Code Example} \label{example_b_nt4}
Following the code construction in Section
\ref{section_un_construction}, another set of dispersion matrices
$\{\textbf{C}'_1;\textbf{Y}'_1,\textbf{Y}'_{2},\textbf{Y}'_3,\textbf{Y}'_{4}\}$
for an unbalanced 2-group-decodable STBC for 4 transmit antennas over 2
symbol durations can be obtained as:
\begin{equation} \label{un_2x4_c2}
\textbf{C}'_1=\left[
\begin{array}{cccccccccc}
    0     &0    & 1     &1    \\
    0     &0    & 1     &-1    \\
\end{array}
\right];
\end{equation}
\begin{equation}\label{un_2x4_y2}
\textbf{Y}'_1={\small\left[
\begin{array}{cccccccccc}
    0     &0    &-1    &1    \\
    0     &0    &1     &1    \\
\end{array}
\right]},~ \textbf{Y}'_2={\small\left[
\begin{array}{cccccccccc}
    0     &0    &j     &-j   \\
    0     &0    &j     &j    \\
\end{array}
\right]},~ \textbf{Y}'_3={\small\left[
\begin{array}{cccccccccc}
    0     &0    &j     &j   \\
    0     &0    &-j    &j   \\
\end{array}
\right]},~ \textbf{Y}'_4={\small\left[
\begin{array}{cccccccccc}
    0     &0    & j     &j    \\
    0     &0    & j     &-j   \\
\end{array}
\right]}.
\end{equation}

Let
$\{\textbf{A}_1;\textbf{A}_2,\textbf{A}_3,\textbf{A}_4,\textbf{A}_5\}$ and $\{\textbf{B}_1;\textbf{B}_2,\textbf{B}_3,\textbf{B}_4,\textbf{B}_5\}$ in Proposition \ref{balancedprop} be the $\{\textbf{C}_1;\textbf{Y}_1,\textbf{Y}_{2},\textbf{Y}_3,\textbf{Y}_{4}\}$
in (\ref{un_2x4_c})(\ref{un_2x4_y}) and $\{\textbf{C}'_1;\textbf{Y}'_1,\textbf{Y}'_{2},\textbf{Y}'_3,\textbf{Y}'_{4}\}$ in (\ref{un_2x4_c2})(\ref{un_2x4_y2}), then the dispersion matrices for a balanced 2-group-decodable STBC obtained are:
\begin{equation*}
\begin{split}
&\textbf{U}_1={\small\left[
\begin{array}{cccccccccc}
    1     &1   &0     &0    \\
    1     &-1  &0     &0     \\
    0     &0   &-1    &1    \\
    0     &0   &1    &1    \\
\end{array}
\right]},~\textbf{U}_2={\small\left[
\begin{array}{cccccccccc}
    1     &1   &0     &0    \\
    1     &-1  &0     &0     \\
    0     &0   &j    &-j    \\
    0     &0   &j    &j    \\
\end{array}
\right]},~\textbf{U}_3={\small\left[
\begin{array}{cccccccccc}
    1     &1   &0     &0    \\
    1     &-1  &0     &0     \\
    0     &0   &j    &j    \\
    0     &0   &-j    &j    \\
\end{array}
\right]},~ \textbf{U}_4={\small\left[
\begin{array}{cccccccccc}
    1     &1   &0     &0    \\
    1     &-1  &0     &0     \\
    0     &0   &j    &j    \\
    0     &0   &j    &-j    \\
\end{array}
\right]},\\
\end{split}
\end{equation*}
\begin{equation}\label{b_4x4_cy}
\begin{split}
&\textbf{U}_5={\small\left[
\begin{array}{cccccccccc}
    -1    &-1   &0     &0    \\
    -1    &1  &0     &0     \\
    0     &0   &-1    &1    \\
    0     &0   &1    &1    \\
\end{array}
\right]};~\textbf{V}_1={\small\left[
\begin{array}{cccccccccc}
    -1     &1   &0     &0    \\
    1     &1  &0     &0     \\
    0     &0   &1    &1    \\
    0     &0   &1    &-1    \\
\end{array}
\right]},~\textbf{V}_2={\small\left[
\begin{array}{cccccccccc}
    j     &-j   &0     &0    \\
    j     &j  &0     &0     \\
    0     &0   &1    &1    \\
    0     &0   &1    &-1    \\
\end{array}
\right]},~ \textbf{V}_3={\small\left[
\begin{array}{cccccccccc}
    j     &j   &0     &0    \\
    -j     &j  &0     &0     \\
    0     &0   &1    &1    \\
    0     &0   &1    &-1    \\
\end{array}
\right]},\\&\textbf{V}_4={\small\left[
\begin{array}{cccccccccc}
    j     &j   &0     &0    \\
    j     &-j  &0     &0     \\
    0     &0   &1    &1    \\
    0     &0   &1    &-1    \\
\end{array}
\right]},~~~\textbf{V}_5={\small\left[
\begin{array}{cccccccccc}
    -1     &1   &0     &0    \\
    1     &1  &0     &0     \\
    0     &0   &-1    &-1    \\
    0     &0   &-1    &1    \\
\end{array}
\right]}.
\end{split}
\end{equation}

The resultant balanced 2-group-decodable STBC for 4 transmit antennas over 4
symbol durations is:
\begin{equation}\label{example_b_matrixnt2}
\begin{split}
&\textbf{X}_{\emph{\emph{b,4}}}=\sum^{5}_{l=1}{s_{l}\textbf{U}_{l}}+\sum^{10}_{l=6}{s_{l}\textbf{V}_{l-5}}=
\\&{\small\left[\begin{array}{cccccccccccccccc}
    s_1+s_2+s_3+s_4-s_5+js_6+js_7+js_8-s_9-s_{10}   ~~~~ s_1+s_2+s_3+s_4-s_5+js_6-js_7+js_8+s_9+s_{10}  ~~~~~0   ~~~0   \\
    s_1+s_2+s_3+s_4-s_5+js_6+js_7-js_8+s_9+s_{10}   ~~~ -s_1-s_2-s_3-s_4+s_5-js_6+js_7+js_8+s_9+s_{10} ~~~0   ~~~0   \\
    0   ~~~0 ~~~js_1+js_2+js_3-s_4-s_5+s_6+s_7+s_8+s_9-s_{10}   ~~~~~js_1-js_2+js_3+s_4+s_5+s_6+s_7+s_8+s_9-s_{10}    \\
    0   ~~~0 ~~~js_1+js_2-js_3+s_4+s_5+s_6+s_7+s_8+s_9-s_{10}   ~~-js_1+js_2+js_3+s_4+s_5-s_6-s_7-s_8-s_9+s_{10}   \\
\end{array}
\right]}
\end{split}
\end{equation}
where $s_1$ to $s_5$ are in the first group, while $s_{6}$ to $s_{10}$ are in the second group. For this code, $L_{max}=5$, $K=1$ and $R=5/4$, hence, its decoding complexity order calculated following (\ref{DC_order}) is:
\begin{equation}\label{DC_order_b_matrixnt2}
O=K\cdot 2^{\frac{(L_{max}-K+1)b}{2R}}= 2^{2b}.
\end{equation}

\section{Simulations and Discussions}
In this section, we investigate the BER performance and ML decoding complexity order of the 2-group-decodable STBC examples shown earlier. In all simulations, the MIMO channel is assumed to be quasi-static Rayleigh fading in the sense that the channel coefficients do not change
during one codeword transmission, and the channel state information
is perfectly known at the receiver.

\subsection{Unbalanced 2-Group-Decodable STBC}
\subsubsection{2 Transmit Antennas}
In this subsection, we compare the unbalanced
2-group-decodable STBC $\textbf{X}_{\emph{\emph{un,2}}}$ in (\ref{example_un_matrixnt2}) with Alamouti code \cite{Alamouti}, BLAST \cite{Foschini} and Golden code \cite{Belfiore} in a 2$\times$2
MIMO system with 4 bits per channel use. Due to the different code rates, Alamouti code, BLAST
and Golden code are simulated with 16-QAM, 4-QAM and 4-QAM,
respectively. On the other hand, $\textbf{X}_{\emph{\emph{un,2}}}$ is of code
rate $5/4$. We let one real symbol be drawn from 4-PAM, and other 4 real symbols
(viewed as 2 complex symbols) be drawn from 8-QAM, then the bit rate
of $\textbf{X}_{\emph{\emph{un,2}}}$ is 4 bits per channel use.

The parameters of these codes are compared in Table \ref{table_comp_2gp2nt}, including the decoding complexity order following (\ref{DC_order}). Table \ref{table_comp_2gp2nt} shows that the proposed code has much lower decoding complexity order than Golden code due to group-decodable code structure, and higher decoding complexity order than Alamouti code due to higher code rate. For example, with $b=4$ bits per channel use, the decoding complexities of Golden code, the proposed code and Alamouti code are in decreasing order of $2^8,~ 3\cdot 2^{3}(\emph{\emph{approximate}})\emph{\emph{ and }}2^2$.
\begin{center}
\begin{threeparttable}[!b]
\tabcolsep 5mm \caption{Comparison of Space-Time Codes in A 2$\times$2 MIMO System with $b$ Bits/Channel Use.} \label{table_comp_2gp2nt}
\newcommand{\rb}[1]{\raisebox{1.8ex}[0pt]{#1}}
\newcommand{\rbb}[1]{\raisebox{1.0ex}[0pt]{#1}}
{\small{\small{\small\begin{tabular}{| c |c | c | c | c |c |} \hline
&  &  &  & \multicolumn{2} {|c|}{Complexity order: $O$}
\\\cline{5-6}  & \rb{Code length: $T$} &
\rb{Code rate: $R$} & \rb{Group size: $L_{max}$} & $b$ & $b=4$
\\ \hline\hline
{\rule[-1mm]{0mm}{6mm}}Alamouti code\cite{Alamouti} &2    & 1   & 1
& $2^{\frac{b}{2}}$ & $2^2$
\\ \hline
{\rule[-1mm]{0mm}{6mm}}BLAST\cite{Foschini}        & 1   & 2   & 4 &
$2^b$ & $2^4$
\\ \hline
{\rule[-1mm]{0mm}{6mm}}Golden code\cite{Belfiore}  & 2    & 2  & 8 &
$2^{2b}$ & $2^8$
\\ \hline
{\rule[-1mm]{0mm}{6mm}}$\textbf{X}_{\emph{\emph{un,2}}}$ proposed in
(\ref{example_un_matrixnt2}) & 4 & 5/4 &4 & $3\cdot
2^{\frac{4b}{5}}$ & $\approx 3\cdot 2^{3}$
\\ \hline
\end{tabular}
}}}
\end{threeparttable}
\end{center}
\vspace{0.04in}

We plot the BER curves of these codes in Fig. \ref{ber_nt2_4bps}. To achieve full diversity, constellation rotations for $\textbf{X}_{\emph{\emph{un,2}}}$ are obtained by computer search\footnote{Optimized constellation rotation angles are 0 for $s_4$ (drawn from 4-PAM), $0.0735\pi$ for $s_1$ and $s_5$ (drawn from 8-QAM), $0$ for $s_2$ and $s_3$ (drawn from 8-QAM).}. Fig. \ref{ber_nt2_4bps} shows that the proposed $\textbf{X}_{\emph{\emph{un,2}}}$ can
achieve full diversity (same BER slope as Alamouti code and Golden code). The BER curve of $\textbf{X}_{\emph{\emph{un,2}}}$ lies between those of Golden code and Alamouti code, which is in accordance with their code rates.

\begin{figure}[!t]
\centering
\includegraphics[width=4.3in]{bpshz4_2nt2nr_ml_snrbps.eps}
\caption{BER performances in a 2$\times$2 MIMO system with 4 bits
per channel use.}
\label{ber_nt2_4bps}
\end{figure}

\subsubsection{4 Transmit Antennas}
We compare the proposed unbalanced 2-group-decodable STBC with
orthogonal STBC (OSTBC) \cite{Ganesan_ostbc}, quasi-orthogonal STBC
(QOSTBC) \cite{Tirkkonen,Jafarkhani,Yuen_book}, perfect code
\cite{Oggier} and PS-SR code \cite{Rajan4x2} in a 4$\times$2 MIMO
system with about 4 bits per channel use. The OSTBC, QOSTBC, perfect
code and PS-SR code are simulated with 32-QAM (3.75 bits per channel
use), 16-QAM, 16-QAM (3.64 bits per channel use), 4-QAM and 4-QAM,
respectively. To achieve code rate 2, we simulate the unbalanced
2-group-decodable STBC $\textbf{X}_{\emph{\emph{un,4}}}$ in
(\ref{example_un_matrixnt4}) with $s_{17}$ removed. Then the bit
rate of $\textbf{X}_{\emph{\emph{un,4}}}$ with 4-QAM is 4 bits per
channel use.

The parameters of these codes are listed in Table \ref{table_comp_2gp4nt}. It shows that the proposed code has lower ML decoding complexity order than the perfect code due to group-decodable code structure, and higher decoding complexity order than the OSTBC and QOSTBC due to higher code rate. Due to fast decoding code structure, the PS-SR code has a lower decoding complexity that that of the proposed. For example,
\begin{center}
\begin{threeparttable}[!b]
\tabcolsep 3.4mm \caption{Comparison of Space-Time Codes in A 4$\times$2 MIMO System with $b$ Bits/Channel Use.}\label{table_comp_2gp4nt}
\newcommand{\rb}[1]{\raisebox{1.8ex}[0pt]{#1}}
\newcommand{\rbb}[1]{\raisebox{1.0ex}[0pt]{#1}}
{\small{\small{\small\begin{tabular}{| c |c | c | c | c |c |} \hline
&  &  &  & \multicolumn{2} {|c|}{Complexity order: $O$}
\\\cline{5-6}  & \rb{Code length: $T$} &
\rb{Code rate: $R$} & \rb{Group size: $L_{max}$} & $b$ & $b=4$
\\ \hline\hline
{\rule[-1mm]{0mm}{6mm}}OSTBC\cite{Ganesan_ostbc} &4    & 3/4   &1 &
$2^{\frac{2b}{3}}$ & $\approx 2^{3}$
\\ \hline
{\rule[-1mm]{0mm}{6mm}}QOSTBC\cite{Tirkkonen,Jafarkhani,Yuen_book} &
4 & 1   & 2 & $2^b$ & $2^{4}$
\\ \hline
{\rule[-1mm]{0mm}{6mm}}Perfect code\cite{Oggier}  & 4    & 2  & 16 &
$2^{4b}$ & $2^{16}$
\\ \hline
{\rule[-1mm]{0mm}{6mm}}PS-SR code\cite{Rajan4x2}  & 4    & 2  & 16 &
$8\cdot2^{\frac{9b}{4}}$ & $8\cdot 2^{9}$
\\ \hline
{\rule[-1mm]{0mm}{6mm}}$\textbf{X}_{\emph{\emph{un,4}}}$ in
(\ref{example_un_matrixnt4}) with $s_{17}$ removed$^a$ & 4 & 2& 15 & $5\cdot
2^{\frac{11b}{4}}$ & $5\cdot 2^{11}$
\\ \hline
\end{tabular}
\begin{tablenotes}
\item[$^a$] With $s_{17}$ removed from $\textbf{X}_{\emph{\emph{un,4}}}$ in (\ref{example_un_matrixnt4}), the $R$ and $L_{max}$ in (\ref{DC_order_un_matrixnt4}) are updated as $R=2$ and $L_{max}=15$.
\end{tablenotes}}}}
\end{threeparttable}
\end{center}
\vspace{0.02in}

\noindent with $b=4$ bits per channel use, the decoding complexities
of perfect code, the proposed code, PS-SR code, QOSTBC, and OSTBC
are in decreasing order of $2^{16},~ 5\cdot 2^{11},~8\cdot
2^{9},~2^{4},\emph{\emph{ and }}~2^{3}$ (approximate).

We plot the BER curves in Fig. \ref{ber_nt4_4bps}, where the optimum
constellation rotation proposed in \cite{Su} is applied for QOSTBC
and the constellation rotations for
$\textbf{X}_{\emph{\emph{un,4}}}$ are obtained by computer
search\footnote{Optimized constellation rotation angles are $0$ for
$s_{1}$ and $s_{5}$, $0.1413\pi$ for $s_{2}$ and $s_{6}$,
$0.1413\pi$ for $s_{3}$ and $s_{4}$, $0.1538\pi$ for $s_{7}$ and
$s_{8}$, $0.2493\pi$ for $s_{9}$ and $s_{10}$, $0.1691\pi$ for
$s_{11}$ and $s_{13}$, $0.1044\pi$ for $s_{12}$ and $s_{16}$,
$0.2140\pi$ for $s_{14}$ and $s_{15}$.}. From Fig.
\ref{ber_nt4_4bps}, we can see that the proposed
$\textbf{X}_{\emph{\emph{un,4}}}$ has the same full diversity gain
as the perfect code and the PS-SR code (the PS-SR code has the best BER
performance), and performs much better than OSTBC and QOSTBC due to
higher code rate.

\begin{figure}[!t]
\centering
\includegraphics[width=4.3in]{nt4nr2_4bps_mlber_snrbps01.eps}
\caption{BER performances in a 4$\times$2 MIMO system with about 4 bits per channel use.}
\label{ber_nt4_4bps}
\end{figure}

\subsection{Balanced 2-Group-Decodable STBC}
In this subsection, we compare the proposed balanced 2-group-decodable STBC $\textbf{X}_{\emph{\emph{b,4}}}$ in (\ref{example_b_matrixnt2}) with the 2-group-decodable STBC presented in \cite{Rajan_2gp} in a 4$\times$2 MIMO system with 2.5 bits per channel use. Since their code rates are 5/4, they will be simulated with 4-QAM.

Both codes have the same decoding complexity order. We plot their BER curves in Fig.
\ref{ber_nt4_25bps}, where the constellation rotations for $\textbf{X}_{\emph{\emph{b,4}}}$ are obtained by computer search\footnote{Optimized constellation angles are $0.1538\pi$ for $s_1$ and $s_3$ (similarly $s_6$ and $s_8$), $0.4625\pi$ for $s_2$ and $s_5$ (similarly $s_7$ and $s_{10}$), 0 for $s_4$ and $s_9$.}. Such constellation rotation optimization are feasible because the information symbols are group-decodable and hence can be optimized separately. From Fig. \ref{ber_nt4_25bps}, we can see that both codes achieve full diversity
gain, and the proposed code has a small 0.3 dB coding gain over the code in \cite{Rajan_2gp} probably because our constellation rotation angles are slightly more optimal.
\begin{figure}[!t]
\centering
\includegraphics[width=4.3in]{rajan_proposed_comparison.eps}
\caption{BER performances in a 4$\times$2 MIMO system with 2.5 bits per channel use.}
\label{ber_nt4_25bps}
\end{figure}

\subsection{3-Time-Slot STBC}
In this subsection, we compare the proposed 3-time-slot STBC $\textbf{X}_{\emph{\emph{3gpp}}}$ in (\ref{example_un_matrixt3}) with the other 3-time-slot STBC $\textbf{X}_{\emph{\emph{AL}}}$ presented in \cite{ALcode} in a 2$\times$2 MIMO system with 3 bits per channel use. As the code rates of $\textbf{X}_{\emph{\emph{3gpp}}}$ and $\textbf{X}_{\emph{\emph{AL}}}$ are 1.5 and 1, they are applied with 4-QAM and 8-PSK, respectively.

We plot their BER curves in Fig.
\ref{ber_t3_3bps}, where the constellation rotations for $\textbf{X}_{\emph{\emph{3gpp}}}$ are obtained by computer search\footnote{Optimized constellation angles are $0$ for $s_1$, $0.0875\pi$ for $s_2$ and $s_6$, $0.0875\pi$ for $s_3$ and $s_7$, $0.05\pi$ for $s_4$ and $s_8$ and $0.1625\pi$ for $s_5$ and $s_9$.}. From Fig. \ref{ber_t3_3bps}, we can see that the proposed $\textbf{X}_{\emph{\emph{3gpp}}}$ achieves a much better performance than the $\textbf{X}_{\emph{\emph{AL}}}$ \cite{ALcode} due to higher diversity gain.
\begin{figure}[!t]
\centering
\includegraphics[width=4.3in]{code3x2_nt2nr2_3bps_ml_forpaper.eps}
\caption{BER performances of 3-time-slot codes in a 2$\times$2 MIMO system with 3 bits per channel use.}
\label{ber_t3_3bps}
\end{figure}

\section{Conclusion}
In this paper, we first derive unbalanced 2-group-decodable
high-rate STBC for $N$ transmit antennas over $T$ symbol durations
with code rates upper-bounded by $\frac{2TN-N^2+1}{2T}$ for $T\geq N$, or
$\frac{T^2+1}{2T}$ for $T<N$, then use them to systematically
construct balanced 2-group-decodable high-rate STBC with code rates
$\frac{TN-N^2+1}{T}$ for $T\geq 2N$, or $\frac{T^2+4}{4T}$ for
$T<2N$. The proposed high-rate STBC are able to achieve full
symbol-wise diversity, and their code rates increase almost linearly
with the transmit antenna number $N$ and approach $N$ asymptotically
when $T\gg N$. Performance studies show that with constellation
rotation optimization, the proposed 2-group-decodable STBC can
achieve the same full diversity as the algebraic STBC, and much
better BER performance than the (quasi-)orthogonal STBC. The
proposed code is very scalable in code length, transmit antenna
number and code rate. Its constellation
rotation optimization is also easier to perform because its
symbols are group-orthogonal and hence can be optimized separately.

\appendices
\section{}
\label{proofindependence} We employ proof by contradiction.
\renewcommand{\theequation}{\thesection.\arabic{equation}}

 (Necessary condition) Assume that
$\tqbinom{\textbf{C}^R_{i_1}}{\textbf{C}^I_{i_1}},~
\tqbinom{\textbf{C}^R_{i_2}}{\textbf{C}^I_{i_2}},\cdots,$ $
\tqbinom{\textbf{C}^R_{i_{L_i}}}{\textbf{C}^I_{i_{L_i}}}$ are not
linearly independent, i.e.,
$\mathscr{C}_{i_1},\mathscr{C}_{i_2},\cdots,$
$\mathscr{C}_{i_{L_i}}$ in (\ref{r_Hs}) are not linearly
independent. Then there exists $ \alpha_{i_1}\mathscr{C}_{i_1}+
\alpha_{i_2}\mathscr{C}_{i_2} +\cdots
+\alpha_{i_{L_i}}\mathscr{C}_{i_{L_i}}=\textbf{0}$ where not all the
scalars $\alpha_{i_1},\alpha_{i_2},\cdots,\alpha_{i_{L_i}}$ are
zero. Since $\textbf{h}_{i}=\mathscr{C}_i\bar{\textbf{h}}$, we have
\begin{equation}
\begin{split}
\alpha_{i_1}\textbf{h}_{i_1}+\alpha_{i_2}\textbf{h}_{i_2}+\cdots+\alpha_{i_{L_i}}\textbf{h}_{i_{L_i}}
&=\alpha_{i_1}\mathscr{C}_{i_1}\bar{\textbf{h}}+
\alpha_{i_2}\mathscr{C}_{i_2}\bar{\textbf{h}} +\cdots
+\alpha_{i_{L_i}}\mathscr{C}_{i_{L_i}}\bar{\textbf{h}}
\\&=(\alpha_{i_1}\mathscr{C}_{i_1}+ \alpha_{i_2}\mathscr{C}_{i_2}
+\cdots +\alpha_{i_{L_i}}\mathscr{C}_{i_{L_i}}
)\bar{\textbf{h}}\\&=\textbf{0}
\end{split}
\end{equation}
In other words, the assumed premise on $\textbf{h}_{i_1},\textbf{h}_{i_2},\cdots,$ $\textbf{h}_{i_{L_i}}$ is violated.
Therefore, the necessary condition is proved.

(Sufficient condition) Assume that
$\textbf{h}_{i_1},\textbf{h}_{i_2},\cdots,\textbf{h}_{i_{L_i}}$ are
not linearly independent, i.e., $ \alpha_{i_1}\textbf{h}_{i_1}+
\alpha_{i_2}\textbf{h}_{i_2} +\cdots
+\alpha_{i_{L_i}}\textbf{h}_{i_{L_i}}=\textbf{0}$ where not all the
scalars $\alpha_{i_1},\alpha_{i_2},\cdots,\alpha_{i_{L_i}}$ are
zero. We can obtain that:
\begin{equation}
\begin{split}
\textbf{0}&=\alpha_{i_1}\textbf{h}_{i_1}+
\alpha_{i_2}\textbf{h}_{i_2} +\cdots
+\alpha_{i_{L_i}}\textbf{h}_{i_{L_i}}\\&=(\alpha_{i_1}\mathscr{C}_{i_1}+
\alpha_{i_2}\mathscr{C}_{i_2} +\cdots
+\alpha_{i_{L_i}}\mathscr{C}_{i_{L_i}}
)\bar{\textbf{h}}\\&=\mathscr{C}\bar{\textbf{h}}
\end{split}
\end{equation}
where $\bar{\textbf{h}}$ is of size $2NM\times 1$. Since
$\bar{\textbf{h}}$ is the channel coefficient vector with
independent entries, we have $dim(\{\bar{\textbf{h}}\})=2NM$. Then,
$rank(\mathscr{C})$ must be 0. In other words,
$\mathscr{C}=\textbf{0}$. Therefore,
$\mathscr{C}_{i_1},\mathscr{C}_{i_2},\cdots,\mathscr{C}_{i_{L_i}}$
are linearly dependent, i.e.,
$\tqbinom{\textbf{C}^R_{i_1}}{\textbf{C}^I_{i_1}},~
\tqbinom{\textbf{C}^R_{i_2}}{\textbf{C}^I_{i_2}},\cdots,
\tqbinom{\textbf{C}^R_{i_{L_i}}}{\textbf{C}^I_{i_{L_i}}}$ are not
linearly independent. Hence, the sufficient condition is proved.

Combining the two conclusions, Theorem \ref{th_independence}
is proved.

\section{}
\label{proof_rank_C}

\begin{figure*}
\centering
\includegraphics[width=7.2in]{c1.eps}
\end{figure*}

\begin{figure*}
\centering
\includegraphics[width=7.2in]{c2.eps}
\end{figure*}

i) When $T\geq N$, after some row/column permutations,
$\mathcal {C}$ can be rewritten as (B.29) where $\mathcal
{C}_{sub_i}=[\mathbbm{c}_i~\mathbbm{c}_{i+1}~\mathbbm{c}'_{i+1}~\cdots$
$\mathbbm{c}_N~\mathbbm{c}'_N ]^T(i=1,2,\cdots ,N)$ are highlighted
in dashed boxes and $\star$ stand for the other
elements in $\mathcal {C}$. In fact,
$rank(\mathcal{C}_{sub_i})=2(N-i)+1$ because
$\mathbbm{c}_1,\mathbbm{c}_{2},\mathbbm{c}'_{2},\cdots,\mathbbm{c}_N,\mathbbm{c}'_N$
are linearly-independent row vectors when $rank(\textbf{C})=N$. This
will be proved below using proof by contradiction.

Recall that
$\mathbbm{c}_n=[c^R_{1n}~c^I_{1n}~c^R_{2n}~c^I_{2n}~\cdots~
c^R_{Tn}~c^I_{Tn}]$ and $\mathbbm{c}'_n=[c^I_{1n}~-c^R_{1n}$
$~c^I_{2n}~-c^R_{2n}~\cdots~c^I_{Tn}~-c^R_{Tn}]$. Let
$\textbf{C}=[\textbf{c}_1~\textbf{c}_2,\cdots~\textbf{c}_N]$, then
$\mathbbm{c}_i=e(\textbf{c}_i)~(i=1,2,\cdots ,N)$ where $e$ is a
complex-vector-to-real-vector mapping function and
$\mathbbm{c}'_i=e(-j\textbf{c}_i)$. Suppose that
$\mathbbm{c}_1,\mathbbm{c}_{2},\mathbbm{c}'_{2},\cdots,\mathbbm{c}_N,\mathbbm{c}'_N$
are linearly dependent, then, since
$\mathbbm{c}_1,\mathbbm{c}_{2},\mathbbm{c}'_{2},\cdots,\mathbbm{c}_N,\mathbbm{c}'_N$
are real, there is \setcounter{equation}{29}
\begin{equation}\label{real_dependent}
\alpha_{11}\mathbbm{c}_1+
\alpha_{21}\mathbbm{c}_{2}+\alpha_{22}\mathbbm{c}'_{2}+\cdots
+\alpha_{N1}\mathbbm{c}_{N}+\alpha_{N2}\mathbbm{c}'_{N}=\textbf{0}
\end{equation}
where not all the real scalars
$\alpha_{11},\alpha_{21},\alpha_{22},\cdots,\alpha_{N1},\alpha_{N2}$
are zero. Therefore, under the inverse function for $e$,
(\ref{real_dependent}) can be presented as \setcounter{equation}{30}
\begin{equation
\alpha_{11}\textbf{c}_1+
(\alpha_{21}-j\alpha_{22})\textbf{c}_2+\cdots
+(\alpha_{N1}-j\alpha_{N2})\textbf{c}_N=\textbf{0}
\end{equation}
Since not all the values
$\alpha_{11},\alpha_{21}-j\alpha_{22},\alpha_{N1}-j\alpha_{N2}$ are
zero, $\textbf{c}_1,\textbf{c}_2,\cdots,\textbf{c}_N$ are linearly
dependent and $rank(\textbf{C})<N$, which is contrary to the
original premise. Therefore,
$\mathbbm{c}_1,\mathbbm{c}_{2},\mathbbm{c}'_{2},\cdots,\mathbbm{c}_N,\mathbbm{c}'_N$
are linearly independent, $rank(\mathcal{C}_{sub_i})=2(N-i)+1$ and
$rank(\mathcal{C})=\sum_{i=1}^{N}{rank(\mathcal{C}_{sub_i})}=N^2$.

ii) When $T<N$, $\textbf{C}_{N\times T}$ can be written as
$\left[\textbf{C}_{sub}~\textbf{0}\right]$ where
$rank(\textbf{C})=rank(\textbf{C}_{sub})=T$. After some row/column
permutation, $\mathcal {C}$ can be rewritten as (B.32) where
$\mathcal
{C}_{sub_i}=[\mathbbm{c}_i~\mathbbm{c}_{i+1}~\mathbbm{c}'_{i+1}~
\cdots~\mathbbm{c}_N~\mathbbm{c}'_N ]^T$ are highlighted in
\emph{dashed} boxes with $i = 1, 2, \cdots ,T$ and $\mathcal
{C}_{sub_i}=[\mathbbm{c}_{1}~-\mathbbm{c}'_{1}~\cdots~
\mathbbm{c}_{T}$ $-\mathbbm{c}'_{T}]^T$ are highlighted in
\emph{dotted} boxes with $i=T+1,\cdots ,N$. As stated above, as
$rank(\textbf{C}_{sub})=T$, it can be proved by contradiction that
$\mathbbm{c}_1,\mathbbm{c}_{2},\mathbbm{c}'_{2},
\cdots,\mathbbm{c}_T,\mathbbm{c}'_T $ are linearly independent, and
$\mathbbm{c}_{1},-\mathbbm{c}'_{1},\cdots,\mathbbm{c}_{T},-\mathbbm{c}'_{T}$
are linearly independent too. Then, $rank(\mathcal
{C}_{sub_i})=2(T-i)+1$ for $i=1,2,\cdots ,T$ and $rank(\mathcal
{C}_{sub_i})=2T$ for $i=T+1,\cdots ,N$. Therefore,
$rank(\mathcal{C})=\sum_{i=1}^{N}{rank(\mathcal{C}_{sub_i})}=2TN-T^2$.

If $\textbf{C}$ is not of the form
$\left[\textbf{C}_{sub}~\textbf{0}\right]$, it is easy to prove that
$rank(\mathcal{C})\geq 2TN-T^2$. Due to space limitation, the proof
is omitted here.

redpajama_set_name: RedPajamaArXiv


At Tyneside T-shirts we offer a wide range of engraving services for all scenarios from sports awards to memorial plaques. From basic text to logo and image conversion we can fullfill all of your requirements to the highest standard.
With a wide range of fonts and decorative scrolls your awards and plaques can really stand out from the crowd.


text:
Marloes Rozing
Riverside Boat Club at the Heineken Regatta
This past March, Riverside sent three eights over to Amsterdam for the 47th annual Heineken Roeivierkamp.
The regatta is self-identified as a "quadrathlon", or an event with four competitions within it. There are four races of various distances; a 250m, a 750m, a 2500m, and a 5000m. The event is hosted by Nereus Rowing Club, and is held on Amsterdam's Amstel river. The regatta is proudly sponsored by Heineken Brewery. Riverside was well represented on the Amstel river by our Men's sweep team, and our Master's Men and Women's teams. The regatta was held on March 9th and 10th, and as you can imagine, conditions were not exactly favorable. Our crews battled high winds, heavy rain, and low temperatures, as well as hours spent on the water waiting for their next event. Some competitions were cancelled altogether due to the dangerous conditions. However, the stripes did manage to get down the race course a couple of times! Of course, in true RBC fashion, our rowers and coxswains found a way to see the silver lining, and found themselves having a great time. The Heineken regatta is truly a unique experience, and as such, the stories are best told by those who experienced it. Check out the blog posts written by Men's sweep rower Charles Wu and Women's Master's sweep rower Janice Hayes-Cha to read about the excitement and chaos that was the 2019 Heineken Roeivierkamp.
Recap of the Heineken Regatta
the Men's Sweep squad
by Charles Wu
The men's sweeps team sent it's first ever lineup to the Heineken Regatta in Amsterdam this past March. The lineup consisted of coxswain Sarah Ivey, as well as rowers Armando Chavez, Alex Barat, Evan Meisler, Charles Wu, Ryan Brown, Nick Tsantes, Jon Dwyer, and former meatwagoneer and Dutch native Gijs Hoogerwerf. The group arrived in Amsterdam on Thursday, March 7th, and was able to get a first practice in using our borrowed boat from De Hoop, a local rowing club. Conditions were extremely windy (not unlike our worst basin days), so after a short swing row to shake off the overnight travel the group headed back to our rented house boat (right along the race course). The first evening was spent with a dinner out with the group at a neighborhood restaurant and preparing for the regatta hydrating with authentic Heineken beer. After attempting to explore the nightlife and discovering that, even internationally, 8 dudes still have a hard time getting into any clubs, we settled down at a bar called the "Cooldown Cafe", which featured a DJ named Vinnie, the playing of the period classic "Levels", an oddly timed playing of "All I want for Christmas is You", and bartenders doing things that would be definitely illegal in the US.
The next day, after a long sleep-in to shake off the hangover and jet lag, we had a much better row in flatter conditions, and spent a bit more time exploring the downtown area. With racing starting the next day, the group decided to head in early (definitely not because we are old) and got a good night's sleep before the first race day.
Saturday was the first day of racing, and the forecast once again was showing significant wind and rain. Races were delayed for hours, and we were uncertain that we were going to be able to race at all. At the end, they cancelled the 5K head race, but kept the 750m piece. Once we found out, we quickly gathered and headed to the boathouse and launched. After almost 2 hours on the water, in between queuing for the race and finally starting we were lined up against the Norwegian Club Laga. After being head to head for about 500 meters, we managed to catch up to the boat that had started ahead of us, forcing us to slow down significantly to avoid a massive collision, much to the dismay of the spectators at Nereus, which was stationed at the finish line. Nevertheless, we got off the water satisfied that we got to race that day (other events, such as the masters races, were cancelled for the day).
That evening, the Heineken brewery hosted their annual Heineken Experience for international crews, so the gang dressed up in our finest formal attire (Henley jackets included) and headed over to the brewery. Turns out international crews pretty much just meant US clubs, as there was a strong presence from RBC, CBC, and other US teams. An open bar of Heineken products was just the cure we needed for an exhausting day of waiting around.
Picture Credits: Charles Wu
Finally on Sunday, the final two races were held (2500M and 250M). Much like the Head of the Charles, we rowed up to the starting line, where we waited with competitors that mostly consisted of European collegiate crews, as well as other clubs. By fate, the Tideway Scullers club (that famously knocked us out at Henley in 2017) was seeded right behind us, and we took particular pride in being able to extend our margin against them over the 2500M piece. One member of our boat claimed that this means that "we could have won Henley".
Unfortunately, the Heineken Regatta is not as well managed as the Head of the Charles, so we had to wait about 2 more hours in between finishing the 2500m and starting the 250m race. This was especially awful since it was pouring rain and about 40 degrees out. By the time we finally lined up against our paired crew for the 250m piece, everyone was barely able to move without shivering. We were paired up against a crew from the University of London, and despite not being warmed up at all, we were able to nip them by about 1/2 length, giving them a full show of the power of American muscle (since there was absolutely no finesse involved).
Finally, we finished racing, and after rushing home and warming up, cooked a family style dinner, ate some space cakes, passed out and ready for an early morning flight back to Boston (except for Evan and Barat, who gallivanted off to Spain for a follow-up Bro-Cation).
the Master's Women's squad by Janice Hayes-Cha
Picture Credits: Janice Hayes-Cha
Amsterdam—what an amazing trip.
Where to begin? In Amsterdam for Heineken regatta. Practice on Thursday- Shackleton expedition, 29 mph. We call off the women's practice. Friday was okay, we got the obligatory photo with the windmill in the background, and attended a fun pasta party at Nereus boat club where Melanie and Christine are accosted by cute drunk dutch guys.
Saturday races were cancelled because of high winds. Sad. Meatwagon got to race in afternoon, and we told everyone they won but they didn't. They looked good.
Saturday afternoon the race official said our Sunday races were on, happy. Then we were at the Heineken brewery and we got the word after dinner that all masters women races were cancelled -so the elite men could take our early time in the schedule. Whaat!? Sad and mad.
So we drank a lot of beer with a 1/2 hour to go on the open bar, after abstaining because we were racing.
Then our RBC master's men get organized and say they would take four women in their boat as a protest. Ok, great idea and really supportive. RBC H4K Mixed 8. We made sure we wouldn't be banned from the regatta with race officials. Then we went to bed very late after more beer.
Then at 6 am texts galore! Officials said the master women races were back on, maybe. Everyone to the river. Yay.
Then our master's men raced and crashed at the start into another boat and two men were injured (took oars in the back), so they somehow finished that race and rowed to our dock, (we were at a different boat house near the finish) to drop the injured men and grabbed two women, and then got to the start for the 250 race while we called an ambulance. For real. This is all during a huge cold windy monsoon by the way and everyone has hypothermia (not literally). Are you still with me?
We wait for our cold wet women to get back and then we launch late and book it to the start where officials are yelling at us in Dutch but Melanie interprets it, and we almost miss the race and have no time to adjust our riggers in a heavy weight boat where we have to pull into our necks. And start the race. It's a killer. Ugh. Wind and waves. Be careful what you wish for.
We get to the last sprint of the race and an oar flies out of the loose oarlock and we almost lose it but Sammi holds on and while we are trying to sprint somehow gets it back into the oarlock and we finish the race alive with 8 oars and 9 wet women.
And then the last race is cancelled (hypothermia and all) (again not literally).
We had hot tea and apple tarts.
The injured men are going to be okay. Hans, a dutch guy, had to stay in the hospital for two days!
Then more beer. And here we are.
Go stripes!
The Master's Men's squad
by Paul Heimlicher
The masters men sent an 8+ to Amsterdam to compete in the H4K (locally called 'the Heineken') in the F bracket. This regatta is perhaps the biggest in the country. It's unique format with four (hence 'vierkamp or 4K distances (three for Masters) is inspired by the allround speed skating races that the Dutch are so fond off and successful in. The line-up from from cox to bow was Peter Choi-Rudy Schreiber-Paul Heimlicher-Trevor de Koekkoek-Andy O'Brian-Mark Klinker-Hans Kroon – Murk Mulders - John Yasaitis. Hans and Murk are from Rudy's new rowing club in Maastricht and graciously offered to substitute for two injured Riverside rowers. The weekend was plagued by foul weather, and our races for Saturday were canceled. Which gave us extra time for socializing and exploring the town. Finally it was decided on Sunday morning to race the distances originally planned for Saturday. The 2,500M event was a tight race and ultimately we took second place just behind CBC. We took 4th place in the 250M dash. The 5k head race was canceled due to high winds. While the weather was less than cooperative, we thoroughly enjoyed our 4 days and 4 nights in Amsterdam. The Dinner and Beer event Saturday night at the Heineken Experience was great fun. We spent much of the evening with local crews and crews from the US including our friends at CBC. All agreed it would be fun to come back and race again next year.
Picture provided by Phil Heimlicher
Tagged: Regatta, International, Heineken, Masters men, Masters women, Men's Sweep
Newer PostCrusher Casey 2019
Older PostThe 1906 Championship

redpajama_set_name: RedPajamaCommonCrawl


text:
Posted on August 24, 2021 August 24, 2021 by Hannah Mark
Mysteries of the deep (and bumpy) seafloor
Featured image: Elevation map of a seamount in the central Pacific, shown in a persepctive view. Image courtesy of the NOAA Office of Ocean Exploration and Research (public domain).
Paper: Fluid-rich subducting topography generates anomalous forearc porosity
Authors: Christine Chesley, Samer Naif, Kerry Key, Dan Bassett
Open any geology textbook, and you're guaranteed to find a cartoon of a subduction zone showing how an incoming oceanic plate dives down beneath another tectonic plate (either continent or ocean) on its way back into Earth's deep interior. These simple sketches typically show the top of the incoming plate as a smooth, gently curved line meeting and joining another smooth line at the base of the overriding plate – and that's not exactly wrong, given the enormous scale of a subduction zone compared to the smallness of the drawing. But if you zoom in far enough on oceanic tectonic plates, the seafloor is often rough and bumpy. What happens, then, when rough seafloor heads into a subduction zone?
A new study by Christine Chesley and co-authors uses electrical conductivity to look at the consequences of subducting seamounts, which are small underwater mountains on top of oceanic plates that are formed by volcanic activity. They measured the electrical conductivity of the shallow subsurface across the Hikurangi subduction zone, off the east coast of the North Island of New Zealand.
Since water is highly conductive, porous rocks with water in them light up in electrical conductivity measurements compared to those with low porosity and less water. The measurements made by Chesley and co-authors showed that a seamount on the oceanic plate headed toward the subduction zone was made up of a low-conductivity cap over a highly conductive layer and a low-conductivity center. This layered structure suggests that some porous, water-rich sediments and volcanic rocks are sandwiched between a low-porosity core and a lava flow.
The authors also saw similar conductivity variations in a deeper feature, likely a seamount that subducted a few million years earlier. Above that deeper feature, some spots of high conductivity are interpreted as areas where the upper plate has been broken up in the wake of the subducting seamount and water has migrated upwards into the resulting fractures.
These conductivity measurements are especially exciting for two main reasons. First, geoscientists have long suspected that seamounts plow into the overriding plates in subduction zones like little bulldozers, forming networks of fractures and faults above them, but actually imaging those fractures has proven difficult. The high conductivity spots above the subducted seamount at Hikurangi provide evidence that the seamount has, in fact, done some damage to the base of the overriding plate and created pathways for water within the downgoing plate to percolate upwards. Second, there's a longstanding debate over whether subducting rough seafloor is likely to make subduction zones more prone to earthquakes because the roughness may get stuck as the plate goes down, building up stress that's later released in an earthquake. The high conductivity layers imaged within the Hikurangi seamount structures suggest that these seamounts are carrying significantly more water than regular oceanic crust without seamounts, and some of that water might get squeezed out as the seamount subducts. This would make the subduction zone interface more likely to creep gently along, rather than sticking in place until enough stress builds up for a large earthquake.
Seamounts may be small – too small to draw on a simple cartoon of a subduction zone that's tens of miles wide – but this study suggests these underwater structures could have an outsize impact on subduction zone processes, from water cycling to earthquake hazards.
Mysteries of the deep (and bumpy) seafloor by Hannah Mark is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
CategoriesResearch Bites Tagsgeology, geophysics, marine, plate tectonics
Previous PostPrevious The Search for Life on Mars Begins on Earth
Next PostNext Mysterious methane on Mars


text:
Q: How do you insert a string within a dynamic target using realloc()? I'm struggling with memory allocation. I wanted to input a string into another and I made two functions that stop working at the same place - realloc. These functions are very similar. In first one I copy char by char into a temporary string and when I try to copy temporary string to the first one is the place where I get errors. In the second function I copy the end of first string (from the given position) to a temporary string, reallocate the first string (this is where I get errors) and remove everything in i from the given position. Then I append second string and temporary to a first string. Here is my code.
First function:
// str2 - is a string that I want to input in first string(str)
// at certain position (pos)

void ins (char **str, char *str2, int pos)
{
        // lenght of first and second strings
        int len = strlen(str[0]),
            len2 = strlen(str2),
            i, j, l = 0;

        // creating temporary string
        char *s = (char *) malloc ((len + len2) * sizeof(char));
        // copying first part of first string
        for (i = 0; i < pos; i++)
                s[i] = str[0][i];
        // copying second string
        for (j = 0; j < len2; j++)
                s[i + j] = str2[j];
        // copying second part of first string
        for (int k = pos; k < len; k++)
        {
                s[i + j + l] = str[0][k];
                l++;
        }

        // reallocating additional space for second string
        // and copying temporary string to first string
        str[0] = (char *) realloc (str[0], (len + len2) * sizeof(char));
        strcpy(str[0], s);

        free(s);
        s = NULL;
}

Second function:
void ins2 (char **str,char *str2, int pos)
{
        // lenght of first and second string
        int len = strlen(str[0]),
            len2 = strlen(str2);

        // creating a temporary string and copying
        // from the given position
        char *s = (char *) malloc ((len - pos) * sizeof(char));
        strcpy(s, str[0] + pos);

        // reallocating space for string that will be added
        // deleting part of it from the given position
        str[0] = (char *) realloc(str[0], (len + len2) * sizeof(char));
        str[0][pos] = '\0';

        // adding second string and temporary string
        strcat(str[0], str2);
        strcat(str[0], s);

        // be free, temporary string
        free(s);
        s = NULL;
}

A: If you're doing what I think you're trying to do, you need one realloc() for this, assuming the incoming string is indeed already dynamically allocated (it better be):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void ins (char **str, const char *str2, size_t pos)
{
    // lenght of first and second strings
    size_t len = strlen(*str);
    size_t len2 = strlen(str2);

    // reallocate new string
    char *tmp = realloc(*str, len + len2 + 1);
    if (tmp != NULL)
    {
        *str = tmp;
        memmove(tmp+pos+len2, tmp+pos, len-pos);
        memcpy(tmp+pos, str2, len2);
        tmp[len+len2] = 0;
    }
}

int main()
{
    char *str = strdup("A simple string");
    char s2[] = "inserted ";

    printf("%s\n", str);
    ins(&str, s2, 9);
    printf("%s\n", str);

    free(str);
    return 0;
}

Output
A simple string
A simple inserted string

How It Works

*

*The passed-in strings are both sent through strlen() to obtain their lengths. Once we have those we know how large the resulting buffer needs to be.

*Once we realloc() the buffer, the original content is preserved, but we need to (possibly) shift content of the first string to open a hole for the second string. That shift, if done, may require overlapped memory be moved (as it does in the sample). For such memory copying, memmove() is used. Unlike memcpy(), the memmove() library function supports copying where the source and destination regions may overlap.

*Once the hole is made, we memcpy() the second string into position. There is no need for strcpy() since we already know the length.

*We finish by tacking the last slot to a terminating 0, thereby finishing the null-terminated string and completing the operation

Note I made no affordances at all for this regarding someone passing an invalid pos (out of range), NULL strings, optimizing to nothing if str2 is empty (or NULL), etc. That cleanup I leave to you, but I hope the idea of how this can be done is clear.

redpajama_set_name: RedPajamaStackExchange


Sorry, but Quartet 23" x 5" Matrix Enclosed Header Sign - S2305 is no longer available to buy.
Elevate your message and bring a personalized level of design to your workspace with this innovative, customizable signage system. Available in a variety of shapes and sizes, Quartet Matrix Enclosed Signs feature a magnetic surface surrounded by a stylish, contemporary frame. Post, protect and easily update important messages behind a clear, peel-back acrylic cover with a magnetic edge. A flexible mounting system secures boards to the wall quickly and easily. Mix and match to build your own dynamic communication system. Change the way your company exchanges ideas and build collaborative relationships with these customizable signs.
Also available in: 34" x 23" and 23" x 23"


text:
Q: php echo variable xml I would like to print a variable in a method post xml text.
Is possible?
<?
$qtdRows = 10; //Ver consulta do banco
$nome = $_POST['nome'];
//ARQUIVO XML CRIADO NO SERVIDOR (Pode ser um arquivo em branco, so para iniciar, e depois ele coloca o conteudo com o script)
$arquivo = "cases.xml";

$escrever .= '<?xml version="1.0" encoding="ISO-8859-1" ?>';
$escrever .= '<filmes>';

    for($i=0; $i<$qtdRows; $i++){
        $escrever .= '<filme>';
        $escrever .= '<nome> $nome </nome>';
        $escrever .= '<ano>$ano</ano>';
        $escrever .= '<diretor>$diretor</diretor>';
        $escrever .= '<comentarios>$filme</comentarios>';
        $escrever .= '</filme>';
    }
$escrever .= '</filmes>';

$fd = fopen ($arquivo, "w"); // abre o arquivo
fwrite($fd, $escrever); //Escreve no arquivo
fclose ($fd); // fecha o arquivo

?>
<script>
    location.href = 'index.php'; //Redirediona, depois de gerado o XML, para qualquer pagina (Ex: index.php)
</script>

this method does not work!
What would the correct syntax? $escrever .= '<nome> $nome </nome>';

A: . is used to concatenate strings, as shown here.
$escrever .= '<nome>' . $nome . '</nome>';

(Add the dots . and the single quotes '.)
Suerte!

A: Change this line:
$escrever .= '<?xml version="1.0" encoding="ISO-8859-1" ?>';

for:
// Without concatenation
$escrever = '<?xml version="1.0" encoding="ISO-8859-1" ?>';

Also, the concatenation should be:
$escrever .= '<nome>' . $nome . '</nome>';

I hope it helps!


Sunset was around 6.30pm here today.
Our clocks go forward tonight, so the sun will be setting after 7.30pm... Yippee!
It felt like spring here too today...we feel full of life again!
We've loved all your photos of Spring! Wasn't Saturday just the most amazing day, we spent most of it walking, reading outside and drinking tea outside...infact staying outside until the sun dipped behind the horizon!
It was wonderful seeing you and we are back down to Cornwall in August so must catch up then.


Sanford Reverb by Sanford Sound Design is a Virtual Effect Audio Plugin. It functions as a VST Plugin.
Left and right input channels each have a set of 3 early reflections that can be independently set. The filter section lets you shape the tone of the reverb's output, and damping is provided to simulate wall absorption. Together these features let you shape the reverb sound to simulate almost any room.
Modulation is also provided to add motion to the reverb tail. The result is a more animated and lively reverb.
Control 6 early reflections, 3 for each channel.
Filter section for shaping the tone.
Damping for simulating wall absorption.
One of the few free reverbs worth using, Sanford's core sound is unbeatable for short and medium length reverb sounds.
In particular its comprehensive early reflections section makes it indispensable for when early reflections really count. ER settings are important to tweak to your particular input source content, and the one-size-fits-all approach of most conventional reverbs make their early reflections almost useless. I've even used only its early reflections with the reverb all the way down to combine a different reverb with good early reflections, for when I want to use a different reverb.
Surgical ER, plus a great core sound that doesn't rely on noisy overdiffusion like most freebie 'verbs do, makes for a reverb I can't help but always come back to.
This thing is just great, really great. I had been demoing the Softube Tsar-1 reverb which is fabulous and I would say the Sanford Reverb is easily as good. Adjustable early reflections, mix for ER and LR, output gain, filters... yep, this thing has everything I need. Not only is it $269 cheaper than Tsar-1, it uses about a quarter of the CPU. This is one of those plugins when you wonder why you would want to pay for something that, quite frankly, is no better. Highly recommended, and comes in both Windows x32 and x64 versions too.
This is my go-to reverb from now on. It is quite probably the best free reverb that you can go crazy with without drowning the dry signal unintentionally. It has complete control over the early reflections, late reflections, a filter, an LFO and even control over the 6 bands of early reflection! It is incredibly easy to get the reverb you want (I normally change only the dry, output, er, lr and time knobs and ignore the modulation, filter and 6 reflections) and both the dry and wet sounds will sound amazing. 10/10, best reverb ever.
just awesome reverb! Especially its freeze mode.
where is the download file??
At the right side of the big picture showing the GUI of the reverb at the top of this present KVR page you have a link "Product Sanford Reverb". Click the link. It leads you to a page where you have four plugins. The plugin Reverb is there... with its link to download it.


text:
Q: Understanding C++ code - "Get the number of digits in an int" I am having trouble understanding how exactly this code works:
int length = 1;
int x = 234567545;
while (x /= 10)
   length++;

It is supposed to count the number of digits in the int variable. I don't get how the while loop is working. Does the loop just go to zero and stop by default? Also, why is the length starting at 1?

A: The loop
while (x /= 10) {
  length++;
}

will go until the result of x /= 10 evaluates to false, since 0 means false it will go until x /= 10 is 0. Integer division truncates, ensuring the condition will be reached. This can be illustrated by adding a simple debug statement, i.e.
while (x /= 10) {
  length++;
  std::cout << length << " " << x << std::endl;
}

Which outputs
2 23456754
3 2345675
4 234567
5 23456
6 2345
7 234
8 23
9 2

A: Integer division will truncate the remainder, so continually dividing a number with integer division will inevitably result in zero.
Dividing a number n by 10 while incrementing a counter i once for each time the resulting quotient (stored back into n) is not zero will result in the i containing the number of digits for the base-10 representation of n.

A: There are three things that might be suspicious for you if you are a C++ beginner:
First thing might be operator /=, which combines an integral division (i.e. without remainder), with an assignment. So x /= 10 actually is the same as x = x / 10.
Second, each expression in C++ has - after having been evaluated - a value. For an assignment like (x = 0), the result is the value of x after the assignment, i.e. 0 in this case.
Third, a condition like if (x) ... with x being of integral type has in C++ the same meaning as if(x != 0), i.e. it is false if x equals 0, and it is true if x is anything else but 0.
All together: while ( x /= 10 ) means assign x the value of an integral division by 10 and then compare the value to 0. If 0 is reached, the loop ends.
BTW: length starts with 1, because any number, even 0, comprises at least one digit.

A: It helps to understand two parts:

*

*what is "/="

*when does the loop terminate

Explain "/="
This:
x /= 10

is the same as:
x = x / 10

Explain when the loop terminates
The while loop terminates, when the condition is false. And 0 is equivalent to false.
while (condition) {
    length++;
}

So x is, with every pass through the loop, divided by 10, until is is 0. That terminates the loop.
So, the condition is two things at the same time:

*

*it is a value, that is compared to 0. The loop continues until this
evaluates to 0.

*it is an assignment: x gets a new value with every evaluation. It's divided by 10, so it converges to 0.

A: x /= 10 continuously divides x by 10, which will make it 0 eventually and cause the while loop to terminate due to 0 being interpreted as false (and any other value than 0 as true).
The reason it starts at length = 1 is because there is always at least 1 digit in the number: if x was from 0 to 9 inclusive, then x /= 10 would cause x to become 0 immediately, meaning nothing inside the loop would execute. Therefore, if length started at 0, it would never get to be incremented to 1 which would be wrong if x was a single digit large.
Manually calculating this example by hand:

*

*234567545 / 10 = 23456754, which is true, so the while loop continues and length becomes 2.

*23456754 / 10 = 2345675, true. length becomes 3.

*2345675 / 10 = 234567, true. length becomes 4.

*234567 / 10 = 23456, true. length becomes 5.

*23456 / 10 = 2345, true. length becomes 6.

*2345 / 10 = 234, true. length becomes 7.

*234 / 10 = 23, true. length becomes 8.

*23 / 10 = 2, true. length becomes 9.

*2 / 10 = 0, false. The while loop stops with length equal 9.

A: This is a bit of stupidity you'll often see in C/C++, taking advantage of the fact that TRUE is implemented as non-zero, and FALSE as zero*. So x is repeatedly divided by 10, and the expression eventually becomes zero, so the loop stops.
Though confusing, this works - until the day someone in a hurry changes x from an int to a double :-)  Much clearer and less failure-prone to write "while (x /= 10 >= 1)", or even to put the math inside the loop body rather than in the condition.
*IMHO one of the few shortcomings of C is that it didn't have an explicit logical type, as FORTRAN did.


Jasper is a prosperous retail hub which is the center of a growing industrial development and home to warm and friendly residents. Avas Florist® is a professional family owned and operated florist capable of offering same day flower deliveries to the residents of Jasper, Alabama.
Several reasons why you should relocate here are the advantages of having one of the top ranked education systems in the State of Alabama and its close proximity to the outstanding recreation areas such as Smith Lake, Bankhead National Forest and the Warrior River.
As you stroll through the communities within the city, you'll notice the hospitality of its residents and the wonderful views that comes along such as in Hidden Ridge, Stoneridge Drive, Autumn Lane, Hillsdale, Wildflower Lane, Springview, Timberwood Street, Jaycees Fairground, Hampton, and Willowbrooke.
Top employers in Jasper which provide stability to the city economy are 1st Franklin Financial, Alabama Power, Charter Communications, Cash Loans, Dunn Construction, Fitness Factory, Jasper's Dental, Millwork Supply, Sears, Southern Home Crafters, Star Petroleum and Stone Electric Heating and Air.
Consistently the city of Jasper produces brilliant minds from their world class education system as evidenced by schools such as Memorial Park School, TR Simmons Elementary, West Jasper Elementary School, Farmstead Elementary, Maddox Middle, Walker High, and Curry High also.
Tourists get a taste of the best from eloquent hotels within the city such as Hampton Inn, Holiday Inn Express and Suites, Jameson Inn, Days Inn, Travel Rite Inn, Quigley's Outback Inn, and Smith Lake Bed & Breakfast.