如何用虚线将矩阵分成上下两部分

如何用虚线将矩阵分成上下两部分

因此,我想做的是:我创建了一个矩阵 C 和另一个矩阵 D。并且我标记了列和行。现在,我想将这两个矩阵合并在一起,保留标签。但我希望 - 我希望这是可能的 - 有一条虚线穿过矩阵,指示标签“TX^C”的结束位置和标签“TX^D”的开始位置。

这是我目前所拥有的:

\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}

只缺少虚线。或者,用浅色阴影遮盖上部矩阵的背景也不错。我刚刚读过一个类似的问题这里。但由于我不太了解 LaTeX,我不知道是否要通过使用 tikz 让事情变得过于复杂。

小编辑:如果我想要两个垂直标签怎么办?例如,我正在尝试这样做:

\[\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

该包blkarray已经为不同的行提供了几个命令。其中一个是\BAhhline你可以定义行的类型

\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}

在此处输入图片描述

答案2

使用{NiceMatrix}nicematrix您有键first-rowlast-rowfirst-collast-col指定外部行和列,并且您可以使用它来添加虚线规则,\Hline[tikz=dashed]使用 TikZ 绘制规则。

\documentclass[a4paper,12pt]{article}
\usepackage{geometry}
\usepackage{nicematrix,tikz}

\begin{document}

\[\mathbf{J} = 
\begin{pNiceMatrix}[first-row,last-col=6]
RB_1 & RB_2 & RB_3 & \dots & RB_m \\
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 \\
\Hline[tikz=dashed]
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{pNiceMatrix}
\]

\end{document}

第一个代码的输出

默认情况下,外部行和列中不绘制虚线。如果您还想在最后一列中绘制虚线,则必须使用另一种技术。使用{NiceArray}和 直接在该 的前言中指定圆括号的位置{NiceArray}

\documentclass[a4paper,12pt]{article}
\usepackage{geometry}
\usepackage{nicematrix,tikz}

\begin{document}

\[\mathbf{J} = 
\begin{NiceArray}{(ccccc)c}[first-row]
RB_1 & RB_2 & RB_3 & \dots & RB_m \\
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 \\
\Hline[tikz=dashed]
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{NiceArray}
\]

\end{document}

上述代码的输出

如果想要在虚线的两边留出更多空间,则必须使用total-width命令键\Hline

\documentclass[a4paper,12pt]{article}
\usepackage{geometry}
\usepackage{nicematrix,tikz}

\begin{document}

\[\mathbf{J} = 
\begin{NiceArray}{(ccccc)c}[first-row]
RB_1 & RB_2 & RB_3 & \dots & RB_m \\
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 \\
\Hline[tikz=dashed,total-width=2mm]
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{NiceArray}
\]

\end{document}

上述代码的输出

该软件包nicematrix还提供了改进点式规则的工具。

\documentclass[a4paper,12pt]{article}
\usepackage{geometry}
\usepackage{nicematrix,tikz}

\begin{document}

\NiceMatrixOptions{xdots/shorten=6pt}

\[\mathbf{J} = 
\begin{NiceArray}{(ccccc)c}[first-row,renew-dots]
RB_1 & RB_2 & RB_3 & \dots & RB_m \\
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 \\
\Hline[tikz=dashed,total-width=2mm]
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{NiceArray}
\]

\end{document}

上述代码的输出

相关内容