离散线谱

离散线谱

****

我想制作这张图片。我没有数据。这是一个具有不同振幅的周期性三角函数。具体来说,我想让棍棒的音量为“零”。谢谢你的帮助。

答案1

这是一次尝试元帖子,它内置于lualatexLaTeX 版本中。

在此处输入图片描述

我定义了一个简单的宏,它以可变数量的离散值作为参数,然后将它们绘制为具有自动调整的轴和标签的棒状图。

\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}

vardef stick_plot(text t) = 
    % count the list of numbers and store them in "values[]"
    % using a "text" parameter allows the macro to have any number of arguments
    numeric n, values[]; n = 0;
    for i=t:
        values[incr n] = i;
    endfor

    % set some unit size parameters -- in postscript points 72=1in, 1cm=28.35
    numeric u, v; u = 20; v = 4;

    % make the axes to fit the data
    path xx, yy;
    xx = origin -- (n * u + 3/2 u, 0);
    yy = origin -- (0, max(t) * v + 2v);

    % make the arrows a bit sharper
    ahangle := 30;

    % make a <picture> variable to return
    image(
        % draw the data lines -- with labels on even k 
        for k=1 upto n:
            draw (k * u, 0) -- (k * u, values[k] * v) withcolor 2/3 blue;
            if not odd k:
                label.bot("$" & decimal k & "$", (k * u, 0));
            fi
        endfor
        % add the axes with labels
        drawarrow xx; label.bot("$k$", point 1/2 of xx shifted 12 down);
        drawarrow yy; label.lft("$A[k]$", point 1/2 of yy);
    )
enddef;

beginfig(1);
draw stick_plot(4,2,12,18,16,8,3,1,0,7,14,10,2,1);
draw stick_plot(1,2,3,4,5,6,7) shifted 80 down;
endfig;
\end{mplibcode}
\end{document}

您需要使用 来编译它lualatex

如果您想要更复杂,您可以考虑添加标签、间距和颜色的参数。有关 Metapost 的更多信息,请点击顶部的链接。

相关内容