3

So, here is what I want to do: I have created a matrix C and another Matrix D. And I have labelled the columns and rows. Now, I want to join these two matrices together, keeping the labels. But I want - I hope this is posssible - to have a dotted line go through the matrix, indicating where labels 'TX^C' end and where labels 'TX^D' start.

This is what I have so far:

\documentclass[a4paper12pt]{article}
\usepackage{geometry}
\usepackage{blkarray}
\usepackage{amsmath}
\usepackage{xcolor}
\usepackage{graphicx}

\begin{document}

\[\mathbf{J} = 
\begin{blockarray}{cccccc}
RB_1 & RB_2 & RB_3 & \dots & RB_m \\
\begin{block}{(ccccc)c}
1 & 0 & 1 & \dots & 0 & TX_1^C \\
0 & 1 & 0 & \dots & 0 & TX_2^C \\
\vdots & \vdots & \vdots &  & \vdots &  \\
&   &   &  &  &  \\
0 & 0 & 0 & \dots & 1 & TX_{max}^C \\
1 & 0 & 1 & \dots & 0 & TX_1^D \\
0 & 1 & 0 & \dots & 0 & TX_2^D \\
\vdots & \vdots & \vdots &  & \vdots &  \\
&   &   &  &  &  \\
0 & 0 & 0 & \dots & 1 & TX_{max}^D \\
\end{block}
\end{blockarray}
\]

\end{document}

Only the dotted line is missing. Alternatively, shading the background of the upper matrix in a light color would be nice as well. I have just read a similar question here. But since I don't know LaTeX so well, I don't know if I want to overcomplicate things by making use of tikz.

Small Edit: What, if I want two vertical labels? I was trying this, for example:

\[\mathbf{Pairs} = 
\begin{blockarray}{cc}
Transmitter & Receiver \\
\begin{block}{c(cc)c}
TX_1^C & (x,y) & (x,y) & BS   \\
TX_2^C & (x,y) & (x,y) & BS     \\
&\vdots & \vdots  \\
TX_{max}^C & (x,y) & (x,y) & BS  \\
\BAhhline{......} 
TX_1^D & (x,y) & (x,y) &RX_1^D   \\
TX_2^D & (x,y) & (x,y) &RX_2^D   \\
&\vdots & \vdots   \\
TX_{ax}^D & (x,y) & (x,y) &RX_{max}^D  \\
\end{block}
\end{blockarray}
\]

1 Answer 1

3

The package blkarray already offers several commands for different lines. One of them is \BAhhline where you can define the kind of line

\documentclass[a4paper12pt]{article}
\usepackage{geometry}
\usepackage{blkarray}
\usepackage{amsmath}
\usepackage{xcolor}
\usepackage{graphicx}

\begin{document}

\[\mathbf{J} = 
\begin{blockarray}{cccccc}
RB_1 & RB_2 & RB_3 & \dots & RB_m \\
\begin{block}{(ccccc)c}
1 & 0 & 1 & \dots & 0 & TX_1^C \\
0 & 1 & 0 & \dots & 0 & TX_2^C \\
\vdots & \vdots & \vdots &  & \vdots &  \\
&   &   &  &  &  \\
0 & 0 & 0 & \dots & 1 & TX_{max}^C \\
\BAhhline{......}
1 & 0 & 1 & \dots & 0 & TX_1^D \\
0 & 1 & 0 & \dots & 0 & TX_2^D \\
\vdots & \vdots & \vdots &  & \vdots &  \\
&   &   &  &  &  \\
0 & 0 & 0 & \dots & 1 & TX_{max}^D \\
\end{block}
\end{blockarray}
\]

\end{document}

enter image description here

3
  • Thx so much, Ignasi! This is exactly what I want. Just - see my edit - what if I only label the columns and not the rows? It doesn't seem to work the way I am trying to do it. I have included the extra & before the \` , because this is where usually there would be the labels. If I leave the &`, at least I don't get an error. But the left bracket is far to much to the left
    – Luk
    Nov 10, 2018 at 12:39
  • hmm... actually, let me correct this: Can you tell me a way of how to have two vertical labels? One on the right and one on the left ?
    – Luk
    Nov 10, 2018 at 12:48
  • ok, nevermind. I have opened a new question for this. Thx so much for your help, again!
    – Luk
    Nov 10, 2018 at 13:35

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .