使用 dspPlot 函数绘制图形

使用 dspPlot 函数绘制图形

我曾尝试使用 dspPlot 绘制图表正如 Paolo Prandoni 教授和 Martin Vetterli 教授在其网站上所解释的那样但失败了。他们运行了以下代码来生成 DSP 书中的曲线,该书可在其网站上在线获取。但是,当我运行相同的代码时,它不起作用。请有人能帮助我。[我几天前写信给作者,但尚未收到他们的回复]

\documentclass[a4paper,11pt]{ltxdoc}
\usepackage{float}
\usepackage{fancyvrb}
\usepackage{enumitem}
%\usepackage{courier}
\usepackage[utopia]{mathdesign}
\usepackage{dspTricks, dspFunctions, dspBlocks}

\newenvironment{centerfig}{%
  \begin{figure}[H]
    \begin{center}}{
    \end{center}
  \end{figure}}


\begin{document}
\begin{centerfig}
\begin{dspPlot}[sidegap=0.5,yticks=none]{-6, 6}{-1.2, 1.2}
    \def\signal{ 0.5235 mul RadtoDeg sin }
    \def\quantize{ dup 0 gt {-0.5} {0.5} ifelse sub truncate }
    \dspFunc[linecolor=gray,linewidth=2pt]{x \quantize \signal }
    \dspFunc[linestyle=dotted,linewidth=1pt]{x \signal}
    \dspSignal{x \signal}
\end{dspPlot}
\end{centerfig}
\end{document}

程序片段及其输出附在下面,供您参考:

在此处输入图片描述

运行代码后出现的错误是:

! Undefined control sequence.
<recently read> \c@lor@to@ps

l.19 ...sidegap=0.5,yticks=none]{-6, 6}{-1.2, 1.2}

?

答案1

xelatex使用或 序列latex-> dvips->运行文档ps2pdf或使用包auto-pst-pdf。但是,无需使用包float

\documentclass[a4paper,11pt]{article}
\usepackage{caption}
\usepackage[utopia]{mathdesign}
\usepackage{dspTricks, dspFunctions, dspBlocks}

\newenvironment{centerfig}
  {\begin{minipage}{\linewidth}\centering}
  {\end{minipage}}

\begin{document}

\begin{centerfig}
\begin{dspPlot}[sidegap=0.5,yticks=none]{-6, 6}{-1.2, 1.2}
    \def\signal{ 0.5235 mul RadtoDeg sin }
    \def\quantize{ dup 0 gt {-0.5} {0.5} ifelse sub truncate }
    \dspFunc[linecolor=gray,linewidth=2pt]{x \quantize \signal }
    \dspFunc[linestyle=dotted,linewidth=1pt]{x \signal}
    \dspSignal{x \signal}
\end{dspPlot}

\begin{dspPlot}[xtype=freq,xout=true]{-1,1}{-0.5,1.5}
  \dspFunc[linecolor=gray,linestyle=dashed]{x \dspSincS{0}{6} 13 div}
  \dspFunc{x \dspFIRI{ 0.3501  0.2823  0.1252 -0.0215 -0.0876
     -0.0868    0.0374} }
\end{dspPlot}
\end{centerfig}

\end{document}

在此处输入图片描述

答案2

这不是对你的问题的直接回答,但是这里有一种使用 TikZ 而不是 PSTricks 来绘制图形而不使用专门的包的方法(因此它可以用任何编译器运行):

\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
    \begin{axis}[
            domain=0:360,
            hide y axis,
            axis x line*=middle,
            xtick=\empty,
            samples=13,
            width=10cm, height=5cm
        ]
    \addplot [const plot mark mid, very thick, gray] {sin(x)};
    \addplot [ycomb, mark=*, thick, mark size=1] {sin(x)};
    \addplot [densely dotted, samples=51] {sin(x)};
    \end{axis}
\end{tikzpicture}

\end{document}

相关内容