我正在尝试生成半波整流电路的波形。我只能通过修改代码在这里给出如下:
第一次修改代码:
\documentclass[border=2mm]{standalone} \usepackage{pgfplots} \pgfplotsset{compat=1.18} \begin{document} \begin{tikzpicture} \begin{axis}[ domain=0:1.5*360, samples=4*360, xtick=\empty, width=10cm, height=4cm, axis x line=bottom, axis y line=left, axis line style={-}, ymax=1.5, ymin=0, enlarge x limits=false, ] \addplot [densely dashed] {sin(x)}; \addplot [thick] {max(sin(x), exp(-(0.0015*mod(x+90, 720)))}; \end{axis} \end{tikzpicture} \end{document}
现在,对上述代码进行进一步修改,具体如下
\addplot [thick] {max(sin(x), exp(-(0.0015*mod(x+270, 720)))};
然而,我想要这样的输出波形。有没有办法使用 pgfplots 或简单的 tikz 包来实现这样的波形?
笔记:前半周期的充电部分应从0/初始值开始。
答案1
绘图取决于两个参数,\mainTW
和\secondT
。第一个参数比略大,pi/2
而后者小于pi/4
。它们控制“波浪”。
代码
\documentclass[11pt, border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{math, calc}
\begin{document}
\tikzmath{%
real \mainTW, \secondT, \angleW, \piW, \boundW;
\piW = 3.14159;
\mainTW = \piW/2 +.1;
\secondT = .22*\piW;
\angleW = {atan(cos(\mainTW r))};
\boundW = 5.3*\piW;
}
\begin{tikzpicture}[every node/.style={scale=.8}, xscale=.7]
\draw[->, thin] (-.5, 0) -- (\boundW, 0) node[below=1ex] {$t$};
\draw[->, thin] (0, -.5) -- (0, 1.5);
\begin{scope}
\clip (-.5, 0) rectangle (\boundW, 1.5);
\draw[dashed, very thin,
variable=\t, domain=-.5:\boundW, samples=80] plot (\t, {sin(\t r)});
\draw[blue, thick, variable=\t]
[domain=0:\secondT, samples=30] plot (\t, {sin(\t r)})
\foreach \j in {0, 1, 2}{%
[domain={2*\j*\piW +\secondT}:{2*\j*\piW +\mainTW}, samples=30]
plot (\t, {sin(\t r)})
to[out=\angleW, in=179]
($({2*(\j+1)*\piW +\secondT}, {sin(\secondT r)})$)
};
\end{scope}
\end{tikzpicture}
\end{document}
答案2
我认为你的阶段是错误的(在链接的答案中,由于这并不重要abs(sin(...
。我试图单独绘制斜坡(x 上的“重复”时间)以了解发生了什么,我有这个 --- 注意使用辅助函数来简化方程式:
\documentclass[border=2mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}[
declare function={
ramp(\x)=mod(\x+270, 360)/360;
}
]
\begin{axis}[
domain=0:1.5*360,
samples=4*360,
% xtick=\empty,
width=10cm, height=4cm,
axis x line=bottom,
axis y line=left,
axis line style={-},
ymax=1.5,
ymin=0,
enlarge x limits=false,
]
\addplot [densely dashed] {sin(x)};
\addplot [thick] {max(sin(x), exp(-ramp(x))};
\addplot [thick, blue, dashed] {exp(-ramp(x))};
\addplot [red] {ramp(x)};
\end{axis}
\end{tikzpicture}
\end{document}
我使用 +270 而不是 -90,因为负 x 的模运算是对称的,而我们不希望在这里出现这种情况。
删除我添加的辅助信息以了解发生了什么,您有:
请注意,为了获得正确的“分离”(切线),您必须输入来自检测器的实数......