gnuplot 的问题

gnuplot 的问题

[fr] 下面的图允许使用名称表示模拟\NN 数字的转换,并使用以下代码实现(默认由 gnuplot 编写)。如您所见,第二个数字并不完整,唯一的区别在于函数调用中,其次,我概括为\NN

[en] 下面的第一张图用于表示模拟到数字的转换,并标明了转换\NN的级别数,使用以下代码执行(您必须允许 gnuplot)。如您所见,第二张图并不完整,唯一的区别在于第二张图中的函数调用,我通过指定\NN

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,fit}

\begin{document}


\begin{tikzpicture}
\def\NN{16}
\begin{scope}[xscale=6,yscale=2]
\draw[draw=red,,fill=pink] plot[id=sin9c,prefix=gnuplot/,domain=0:2,samples=60,
ybar interval] 
function{0.25*floor(\NN/4*(sin(4*x)+0.5*sin(20*x)+0.05*sin(200*x)+0.03*sin(400*x)+2))};
\draw[color=blue,thick] plot[id=sin7c,prefix=gnuplot/,domain=0:2,samples=1000,thick] 
function{sin(4*x)+0.5*sin(20*x)+0.05*sin(200*x)+0.03*sin(400*x)+2};
\foreach \nn in{0,1,2,...,\NN}{
\draw (0,{2*\nn/(\NN/2)}) node[left]{\small \nn}-- (2,{2*\nn/(\NN/2)});
}
\draw (0,0) -- (0,4);
\end{scope}
\end{tikzpicture}


\begin{tikzpicture}
\def\NN{16}
\begin{scope}[xscale=6,yscale=2]
\draw[draw=red,,fill=pink] plot[id=sin9c,prefix=gnuplot/,domain=0:2,samples=60,
ybar interval] 
function{4/\NN*floor(\NN/4*(sin(4*x)+0.5*sin(20*x)+0.05*sin(200*x)
+0.03*sin(400*x)+2))};
\draw[color=blue,thick] plot[id=sin7c,prefix=gnuplot/,domain=0:2,samples=1000,thick]
 function{sin(4*x)+0.5*sin(20*x)+0.05*sin(200*x)+0.03*sin(400*x)+2};
\foreach \nn in{0,1,2,...,\NN}{
\draw (0,{2*\nn/(\NN/2)}) node[left]{\small \nn}-- (2,{2*\nn/(\NN/2)});
}
\draw (0,0) -- (0,4);
\end{scope}
\end{tikzpicture}


\end{document}

在此处输入图片描述

如何获得该库? / 如何取得曲线?

答案1

如果您将两个整数相除(如第二种情况,4/\NN=4/16),gnuplot 将使用整数算术,因此表达式的结果为4/16=0。改用4.0/\NN,则两个图是相同的。

相关内容