平整方波脉冲

平整方波脉冲

我有兴趣使用 TikZ 或 pgfplots 与动画包一起创建一个图。

该图应由沿轴移动的方波脉冲组成z。当它移动时,它应失去“方波性”并变成更平滑的脉冲(见图)。

怀疑可以通过两种方式实现:

  1. \it定义一个会相应变化的时间脉冲函数( )。
  2. 绘制一个带有适当装饰的 TikZ 路径,该路径会随着参数 ( \it) 而改变。

这怎么可能呢?

波弥散

我的第一次尝试:

\documentclass{article}
\usepackage{tikz,pgfplots}
 \usepackage[poster=first, controls, buttonsize=0.8em]{animate}

 \begin{document}
 \begin{animateinline}{10}
    \multiframe{11}{it=0+1}{
        \begin{tikzpicture}
            \begin{axis} [
                xmax = 15,
                ymax = 4,
            ]
                \addplot[domain = 0:20] coordinates {(0,0) (\it+1,0) (\it+1,1) (\it+2,1) (\it+2,0) (\it+5,0)};
            \end{axis}
        \end{tikzpicture}   
    }
 \end{animateinline}%
 \end{document}

答案1

这里有一个建议:取正弦曲线的根。

\documentclass{article}
\usepackage[poster=first, controls, buttonsize=0.8em]{animate}
\usepackage{tikz}
 \tikzset{declare function={f(\x,\y)=pow(sin(180*(\x-\y)),1/(12-\y));}}
 \newcommand{\PulseOne}[1]{(0,0) --(#1,0) --
 plot[domain=#1:{#1+1},variable=\x] ({\x},{f(\x,#1)}) -- ({#1+1},0) --(12,0)}
 \begin{document}
 \begin{animateinline}{10}
 \multiframe{11}{it=0+1}{%
 \begin{tikzpicture}
  \draw[-latex](0,0)--(12.5,0) node[below]{$z$};
  \draw[blue,ultra thick] \PulseOne{\it};
 \end{tikzpicture}}
 \end{animateinline}%
 \end{document}

在此处输入图片描述

我不确定方形消失的速度有多快,但你可以用 f 中的指数来玩,即调整 的第二个参数f。下面是一个例子

\tikzset{declare function={f(\x,\y)=pow(sin(180*(\x-\y)),1/(23-2*\y));}}

在此处输入图片描述

只是为了好玩

\tikzset{declare function={f(\x,\y)=0.5*pow(sin(180*(\x-\y)),1/(1+(\y-11)^2));}}

在此处输入图片描述

顺便说一句,为了创建动画 gif 图像,我使用代码由未来的奥斯卡奖得主@AlexG 创作。

相关内容