Рисование пилообразной формы волны поверх синусоидальной волны Графики PGF

Рисование пилообразной формы волны поверх синусоидальной волны Графики PGF

У меня есть полностью выпрямленная синусоидальная волна, на которую я пытаюсь наложить пилообразную волну, как показано на изображении ниже.

введите описание изображения здесь

Изначально у меня было не очень хорошее решение, но оно было не очень хорошим. У меня есть синусоидальная волна Tex, которую я пытаюсь разместить ниже.

\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}

решение1

Вы можете использовать 1 - 1/(3*180)*mod(x+90,180)для построения пилообразной волны. mod(x,180)повторяет каждые 180единицы, 1/(3*180)масштабирует значения ( 1/180в результате получится пилообразная волна, бегущая от 0до 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}

решение2

Это одно из возможных решений, где foreachиспользуется контур с линейной аппроксимацией с пилообразной формой сигнала.

если нужно, чтобы линия касалась кривой, не проникая в синусоиду, то удалите вертикальную линию и измените \archопределение на 60

введите описание изображения здесь

Код

\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}

Связанный контент