我不知道如何使用tikzpicture
但我想画出这个(不完全是这个因为这是一个用油漆制作的粗略示意图即条形图高度相同且红线之间的距离相同)。
我该如何去做呢?我怎样才能改进代码来创建更长的脉冲而不是条?
我怎样才能让红线正确表示周期长度?
我怎样才能正确匹配蓝线和周期长度?
在 js bibra 的帮助下,我成功补充了最低限度的代码库。我也修改了我的问题。
\documentclass{article}
\usepackage{siunitx}
\usepackage{tikz}
\usetikzlibrary{calc,matrix, arrows.meta, positioning,
decorations,decorations.markings, math}
\begin{document}
\begin{tikzpicture}
%Axes
\draw[->] (-0.2,0) -- (20,0) node[right] {$t$};
\draw[->] (0,-4) -- (0,4) node[above] {$v$};
%Cycle separator
\foreach \x in {1.38,2.57,...,20.23}{\draw[-, red] (\x,-2.5) -- (\x,2.5)
node[above] {\x};}
%PWM
\foreach \x in {0.2,1.4,...,7.4} { \draw[black] (\x,0)--(\x,2)--(\x+0.2,2)--
(\x+0.2,0); }
\foreach \x in {1.7,2.9,...,6.9} { \draw[black] (\x,0)--(\x,2)--(\x+0.2,2)--
(\x+0.2,0); }
\foreach \x in {3.2,4.4,...,6.1} { \draw[black] (\x,0)--(\x,2)--(\x+0.2,2)--
(\x+0.2,0); }
\draw[black] (4.7,0)--(4.7,2)--(4.7+0.2,2)--(4.7+0.2,0);
\foreach \x in {8.5,9.4,...,16.4} { \draw[black] (\x,0)--(\x,-2)--
(\x+0.2,-2)--(\x+0.2,0); }
\foreach \x in {10.7,11.9,...,15.9} { \draw[black] (\x,0)--(\x,-2)--
(\x+0.2,-2)--(\x+0.2,0); }
\foreach \x in {11.2,12.4,...,14.1} { \draw[black] (\x,0)--(\x,-2)--
(\x+0.2,-2)--(\x+0.2,0); }
\draw[black] (12.7,0)--(12.7,-2)--(12.7+0.2,-2)--(12.7+0.2,0);
%Average
\draw[blue] (0,0.5)--(1.38,0.5);
\draw[blue] (1.38,1)--(2.57,1);
\draw[blue] (2.57,1.5)--(3.95,1.5);
\draw[blue] (3.95,2)--(5.338,2);
\end{tikzpicture}
\end{document}
答案1
这只是概念证明,而不是 Tikz 的完整答案
对我来说似乎很简单 - 将 PWM 分成 0.2 个单位宽度、2 个单位高度的矩形 - 每个矩形将有一个坐标 - 例如 1,0--1,2--2,2--2,0 - 这可以替换为 - x,0--x,2--x+1,2--x+1,0 - 其中 x 是一个循环数字
对于负侧脉冲同样如此--x,0--x,-2--x+1,-2--x+1,0
类似地,可以放置红色垂直线来计算占空比等,借助foreach
我保持脉冲宽度为 0.2,你也可以根据需要改变它(\x,0)--(\x,2)--(\x+0.2,2)--(\x+0.2,0)
每个脉冲以 0.4 个单位的间隔开始,您可以再次根据自己的选择进行更改{0.4,0.8,...,4}
希望这有一定的意义——当然,将正弦波与 PWM 结合起来也可以做到,并且在这里得到了解决——https://tex.stackexchange.com/questions/255081/creating-a-pulse-width-modulator-in-tikz
\documentclass{article}
\usepackage{siunitx}
\usepackage{tikz}
\usetikzlibrary{calc,matrix, arrows.meta, positioning, decorations,decorations.markings, math}
\begin{document}
\begin{tikzpicture}
%Axes
\draw[->] (-0.2,0) -- (12,0) node[right] {$t$};
\draw[->] (0,-1.2) -- (0,4) node[above] {$v$};
%PWM
\foreach \x in {0.4,0.8,...,4} { \draw[blue] (\x,0)--(\x,2)--(\x+0.2,2)--(\x+0.2,0); }
\foreach \x in {4.4,4.8,5.2} { \draw[red] (\x,0)--(\x,-2)--(\x+0.2,-2)--(\x+0.2,0); }
\end{tikzpicture}
\end{document}
编辑 添加了黑色的垂直线和绿色的正弦波剪辑
\documentclass{article}
\usepackage{siunitx}
\usepackage{tikz}
\usetikzlibrary{calc,matrix, arrows.meta, positioning,
decorations,decorations.markings, math}
\begin{document}
\begin{tikzpicture}
%Axes
\draw[->] (-0.2,0) -- (8,0) node[right] {$t$};
\draw[->] (0,-1.2) -- (0,4) node[above] {$v$};
%PWM
\foreach \x in {0.4,0.8,...,4} { \draw[blue] (\x,0)--(\x,2)--(\x+0.2,2)--
(\x+0.2,0); }
\foreach \x in {4.4,4.8,5.2} { \draw[red] (\x,0)--(\x,-2)--(\x+0.2,-2)--
(\x+0.2,0); }
\foreach \x in {0.7, 1.5, 2.7,4.1} { \draw[black,thick] (\x,2.2)--(\x,-2.2);
}
{ \draw[green,thick] (0,0.4)--(0.7,0.4)
(0.7,1.2)--(1.5,1.2)
(1.5,2)--(2.7,2); }
\end{tikzpicture}
\end{document}