我想编写如下所示的块矩阵
我尝试过加下划线、分数和使用 __ 作为条目,制作三行,但效果并不好看。我希望矩阵内的水平线之间有间隙,如图所示。我该怎么做?
答案1
这是一种方法:
\documentclass[a4paper,journal]{IEEEtran}
\usepackage{amsmath}
\begin{document}
\[
\begin{bmatrix}
\frac{I}{\mathrm{O}}\frac{\mathrm{O}}{\mathrm{O}}
\end{bmatrix}
\begin{bmatrix}
\frac{x}{u}
\end{bmatrix} =
\begin{bmatrix}
\frac{A}{C}\frac{B}{D}
\end{bmatrix}
\begin{bmatrix}
\frac{x}{u}
\end{bmatrix} +
\begin{bmatrix}
\frac{\mathrm{O}}{-y}
\end{bmatrix}
\]
%
\[
\left[
\frac{I}{\mathrm{O}}\frac{\mathrm{O}}{\mathrm{O}}
\right]
\left[
\frac{x}{u}
\right] =
\left[
\frac{A}{C}\frac{B}{D}
\right]
\left[
\frac{x}{u}
\right] +
\left[
\frac{\mathrm{O}}{-y}
\right]
\]
\end{document}
除了动态变化的括号(\left[
和\right]
),您还可以使用固定大小的括号(如提供的\Bigg[
和)。\Bigg]
amsmath
答案2
这是一个更“类似矩阵”的解决方案:
\documentclass{article}
\usepackage{amsmath,booktabs,xparse}
\ExplSyntaxOn
\DeclareExpandableDocumentCommand{\seps}{m}
{
\noalign{\seps_do_arg:n { #1 } }
\tl_use:N \g_seps_list_tl
}
\tl_new:N \g_seps_list_tl
\cs_new_protected:Npn \seps_do_arg:n #1
{
\tl_clear:N \g_seps_list_tl
\clist_map_inline:nn { #1 }
{ \tl_gput_right:Nn \g_seps_list_tl { \cmidrule(lr){##1--##1} } }
}
\ExplSyntaxOff
\begin{document}
\[
\begin{bmatrix}
I & \textrm{O} \\
\seps{1,2}
\textrm{O} & \textrm{O}
\end{bmatrix}
\begin{bmatrix}
x \\
\seps{1}
u
\end{bmatrix}
=
\begin{bmatrix}
A & B \\
\seps{1,2}
C & D
\end{bmatrix}
\begin{bmatrix}
x \\
\seps{1}
u
\end{bmatrix}
+
\begin{bmatrix}
\mathrm{O} \\
\seps{1}
-y
\end{bmatrix}
\]
\end{document}
您只需提供所需的分隔符列表。不幸的是,很难知道矩阵有多少列。