STBC 的 LaTeX 网格图

STBC 的 LaTeX 网格图

我最近必须为时空分组码绘制多个网格(最早出现在这张纸;开放获取版本是这里)。我想在这里与大家分享代码,这样就不必重复做这项工作了。

如您所见,我创建了一个用于绘制网格的新命令,您可以在其中添加状态数、PSK 顺序以及点之间的 x 和 y 距离作为参数:

\documentclass[a4paper]{文章}

\usepackage{pst-plot,pst-sigsys}
\usepackage[nomessages]{fp}

\newcommand{\trellis}[4]{
  \def \状态 {#1}
  \def \PSK {#2}
  \def \XDISTANCE {#3}
  \def \YDISTANCE {#4}
  \FPupn\NGROUPS{\STATES{} \PSK{} div 0 trunc}
  \multido{\ryA=0+-\YDISTANCE,\nA=1+1}{\STATES}{%
    \dotnode(0,\ryA){dotA\nA}
    \dotnode(\XDISTANCE,\ryA){dotB\nA}
  }
  \multido{\nG=1+1,\nOffset=1+\PSK}{\NGROUPS}{%
    \multido{\nStart=\nG+\NGROUPS}{\PSK}{%
      \multido{\n箭头=\n偏移+1}{\PSK}{%
        \ncline{dotA\n开始}{dotB\n箭头}
      }
    }
  }
}

\开始{文档}
  \begin{pspicture}[showgrid=true](0,0)(12,-20)
    \rput(0,0){\trellis{4}{4}{1.}{1}}
    \rput(3,0){\trellis{16}{4}{1.5}{1}}
    \rput(6,0){\trellis{8}{8}{2.25}{2.25}}
  \结束{pspicture}
\结束{文档}

通过上述代码创建的网格

答案1

您有很多尾随空格,它们会将图像移到右侧。如果您不确定%在行尾放置空格的位置,请对每一行都执行此操作:

\newcommand{\trellis}[4]{%
  \def \STATES {#1}%
  \def \PSK {#2}%
  \def \XDISTANCE {#3}%
  \def \YDISTANCE {#4}%
  \FPupn\NGROUPS{\STATES{} \PSK{} div 0 trunc}%
  \multido{\ryA=0+-\YDISTANCE,\nA=1+1}{\STATES}{%
    \dotnode(0,\ryA){dotA\nA}
    \dotnode(\XDISTANCE,\ryA){dotB\nA}
  }%
  \multido{\nG=1+1,\nOffset=1+\PSK}{\NGROUPS}{%
    \multido{\nStart=\nG+\NGROUPS}{\PSK}{%
      \multido{\nArrows=\nOffset+1}{\PSK}{%
        \ncline{dotA\nStart}{dotB\nArrows}
      }%
    }%
  }%
}

%PSTricks 宏本身会消除所有粘合,因此不需要最后三个。但这并没有什么坏处...

在此处输入图片描述

并且我认为你不需要这个fp包。尝试一下\numexpr

\multido{\nG=1+1,\nOffset=1+\PSK}{\numexpr\STATES/\PSK}{%
  \multido{\nStart=\nG+\numexpr\STATES/\PSK}{\PSK}{%

相关内容