Desenhando uma forma de onda dente de serra em cima de gráficos PGF de onda senoidal

Desenhando uma forma de onda dente de serra em cima de gráficos PGF de onda senoidal

Eu tenho uma onda senoidal totalmente retificada e estou tentando colocar uma forma de onda dente de serra em cima dela, como na imagem abaixo,

insira a descrição da imagem aqui

Originalmente, eu tinha uma solução confusa, mas não era muito boa, tenho uma onda senoidal tex que estou tentando colocá-la abaixo.

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

Responder1

Você pode usar 1 - 1/(3*180)*mod(x+90,180)para traçar uma onda dente de serra. mod(x,180)repete todas 180as unidades, 1/(3*180)dimensiona os valores ( 1/180resultaria em uma onda dente de serra indo de 0até 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}

Responder2

Esta é uma solução possível onde foreacho loop é usado com uma aproximação de linha com forma de onda dente de serra.

se quisermos que a linha toque a curva sem penetrar na onda senoidal, remova a linha vertical e mude \archa definição para 60

insira a descrição da imagem aqui

Código

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

informação relacionada