使用 Tikz 绘制信号时间图

使用 Tikz 绘制信号时间图

我需要绘制大量这样的图。有没有可以使用的 tikz 包,而不是从头开始绘制每个图?这是我为第一张图片编写的代码,但我无法正确获取标签位置。另外,我不需要 y 轴上的刻度。

我需要更改矩形的宽度、水平轴上标记的数字以及每个图上的 y 轴标签

\begin{tikzpicture}
\begin{axis}[
width=6cm,
height=6cm,
x axis line style={-stealth},
y axis line style={-stealth},
xtick={-2,2},
xmin=-3, ymin=-3,
ymax = 3, xmax=3,
axis lines*=center,
xlabel={Time,t $\rightarrow$},
ylabel={x(t)},
]
\addplot+[thick,mark=none,const plot]
coordinates
{(-2,0) (-2,1) (2,1) (2,0)};
\end{axis}
\end{tikzpicture}

信号时间图

答案1

如果绘图不会比这更复杂,您可以使用 Tikz。但请记住,此解决方案仅考虑了您在此问题中分享的细节,因此如果要包含更多参数,则代码可能需要进行一些更改。

输出

在此处输入图片描述

代码

\documentclass[margin=10pt]{standalone}
\usepackage{tikz}

\usetikzlibrary{arrows.meta}

\newcommand\sgraph[2][]{%
\pgfmathtruncatemacro\rig{abs{#2}}
\tikz{%
\draw[thick, -Latex] (0,-1) node[below] {Time, $t \rightarrow$} -- (0,3) node[right] {$x(#1t)$};
\draw[thick, -Latex] ({#2-1},0) -- ({\rig+1},0);
\node[anchor=north west] at (0,0) {$0$};
\draw (#2,-.2) node[below] {$#2$} |- (\rig,1) -- (\rig,-.2) node[below] {$\rig$};
}
}

\begin{document}
\sgraph{-2}
\sgraph[\alpha]{-1}
\sgraph[\gamma]{-4}
\end{document}

答案2

作为 John Kormylo 答案的补充(略有改动):

在此处输入图片描述

\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13,
width=5cm,
xmin=-5,xmax=5,
ymax=2.5,
axis lines*=center,
axis line style={-stealth},
ytick=\empty,
x tick label style={font=\scriptsize},
xlabel={$t$},
xlabel style={at={(1,0.1)},right},
ylabel style={at={(0.5,1)},below right,rotate=-90},
            }

\begin{document}
    \begin{tikzpicture}
\begin{axis}[ylabel={$x(t)$}]
\addplot+[thick,mark=none,const plot] coordinates
    {(-2,0) (-2,1) (2,1) (2,0)};
\end{axis}
    \end{tikzpicture}
\hfill
    \begin{tikzpicture}
\begin{axis}[ylabel={$x(\alpha t)$}]
\addplot+[thick,mark=none,const plot] coordinates
    {(-1,0) (-1,1) (1,1) (1,0)};
\end{axis}
    \end{tikzpicture}
\hfill
    \begin{tikzpicture}
\begin{axis}[ylabel={$x(\gamma t)$}]
\addplot+[thick,mark=none,const plot] coordinates
    {(-4,0) (-4,1) (4,1) (4,0)};
\end{axis}
    \end{tikzpicture}
\end{document}

答案3

将默认设置移至 \pgfplotsset:

\documentclass{standalone}
\usepackage{pgfplots}

\pgfplotsset{every axis/.style={
  width=6cm,
  height=6cm,
  axis lines*=center,
  x axis line style={-stealth},
  y axis line style={-stealth},
  tick align=center,
  xlabel={Time,t $\rightarrow$},
  ylabel={x(t)},
}}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
xmin=-3, ymin=-3,
ymax = 3, xmax=3,
]
\addplot+[thick,mark=none,const plot]
coordinates
{(-2,0) (-2,1) (2,1) (2,0)};
\end{axis}
\end{tikzpicture}

\end{document}

答案4

我会定义一个函数并在整个过程中通过操作样本来使用它,或者如果编译时间不是问题,只需增加样本大小即可获得正确的垂直度。

\documentclass[tikz]{standalone}
\pgfkeys{/pgf/declare function={% heaviside(var,left limit,right limit. amplitude)
  heaviside(\x,\l,\r,\a)=max( 0 , ( \x>= \l ?(\x> \r?0:\a):0);
  } 
}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
  axis lines*=center,
  axis line style={-stealth},
]
  \addplot+[thick,no marks,samples at={-5,-4.01,-4,2,2.01,3}]{heaviside(x,-4,2,5)};
  \addplot+[thick,no marks,samples at={-5,-1.01,-1,1,1.01,3}]{heaviside(x,-1,1,1)};
  \addplot+[thick,no marks,samples at={-5,-2.01,-2,3,3.01,4}]{heaviside(x,-2,3,3)};
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容