
Ich habe eine vollständig gleichgerichtete Sinuswelle, auf die ich eine Sägezahnwellenform legen möchte, wie im Bild unten zu sehen.
Ich hatte ursprünglich eine chaotische Lösung, aber die war nicht sehr gut. Ich habe eine Tex-Sinuswelle und versuche, sie unten zu platzieren.
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
domain=0:1.5*360,
samples=4*360,
xtick=\empty,
width=10cm, height=4cm,
ymin=0,
enlarge x limits=false
]
\addplot [densely dashed] {abs(sin(x))};
\end{axis}
\end{tikzpicture}
\end{document}
Antwort1
Sie können es verwenden 1 - 1/(3*180)*mod(x+90,180)
, um eine Sägezahnwelle zu zeichnen. mod(x,180)
wiederholt alle 180
Einheiten, 1/(3*180)
skaliert die Werte ( 1/180
würde zu einer Sägezahnwelle führen, die von 0
bis verläuft 1
).
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
domain=0:1.5*360,
samples=4*360,
xtick=\empty,
width=10cm, height=4cm,
ymin=0,
enlarge x limits=false
]
\addplot [densely dashed] {abs(sin(x))};
\addplot [very thick] {1-1/(3*180)*mod(x+90,180)};
\end{axis}
\end{tikzpicture}
\end{document}
Antwort2
Dies ist eine mögliche Lösung, bei der foreach
eine Schleife mit einer Liniennäherung mit Sägezahnwellenform verwendet wird.
Wenn man möchte, dass die Linie die Kurve berührt, ohne in die Sinuswelle einzudringen, dann entfernt man die vertikale Linie und ändert \arch
die Definition auf 60
Code
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\begin{document}
\def\arch{90}
\begin{tikzpicture}
\begin{axis}[
domain=0:1.5*360,
samples=360,
xtick={0,90,180,270,360,450,540},
width=10cm, height=5cm,
ymin=0, ymax=1.5, xmin=0,
enlarge x limits=false
]
\addplot [densely dashed] {abs(sin(x))};
% draw the rectified line approximation via foreach skill
\foreach \i/\j in {-1/0,1/2,3/4}{
\addplot [thick,domain=\i*90:{\j*90+\arch}]
{1-0.001*(x-\i*90)};
\addplot[thick] coordinates{(\i*90,1)(\i*90,{1-0.001*(\j*90+\arch-\i*90)})}; % remove this line if the vertical line is undesired and change arch to 90
}
\node[coordinate, pin =above:{\parbox{2cm}{\tiny Voltage Simplified by Approximation}}] at (axis cs: 180,0.9) {};
\end{axis}
\end{tikzpicture}
\end{document}