我曾尝试使用 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}