Funktion mit einem Bogen

Funktion mit einem Bogen

Ich versuche, diese Grafik nachzubilden.

Bildbeschreibung hier eingeben

Ich weiß, dass meine Methode veraltet und irgendwie falsch ist. Ich frage mich, ob es eine bessere Möglichkeit gibt, die oben dargestellte Darstellung zu replizieren, functionohne sie quasi manuell zeichnen zu müssen, wie ich es derzeit tue curve through points.

Die Erklärung:

Die Funktion ist nicht durch eine Formel definiert, stellt aber den Abstand zwischen der Amplitude eines Signals und dem sogenannten Grundrauschen (Rauschen mit konstanter Amplitude) des Ausgangs eines Analog-Digital-Umsetzers dar. Wenn die Amplitude des Signals zunimmt, entfernt es sich linear vom Rauschen. Dies ist der erste Teil der Funktion. Dann hört das Wachstum jedoch auf, linear zu sein, erreicht dann seinen Höhepunkt, gefolgt von der Sättigung des Analog-Digital-Umsetzers und einer abrupten Abnahme des Abstands zwischen der Amplitude des Signals und dem Grundrauschen.

Hier ist mein Versuch mit diesem MWE:

\documentclass{memoir}
\usepackage{tikz,pgfplots}
\usetikzlibrary{shapes.geometric}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{shapes,snakes}
\usetikzlibrary{patterns,hobby}

\begin{document}
\begin{figure}[htbp]
    \centering
    \begin{tikzpicture}
        \draw[-{Latex[length=2.5mm, width=1.5mm]}] (0,0)--(6,0) node[anchor=north]{};
        \draw[-{Latex[length=2.5mm, width=1.5mm]}] (0,0)--(0,6) node[anchor=east]{};
        \node[anchor=south, rotate=90] at (-0.5,3) {$SNR,~SNDR~[dB]$};
        \node[anchor=north] at (3,-0.5) {$Input~Signal~Amplitude~[dBv]$};
        \node[anchor=north east] at (0,0) {0};

        \draw (0,0) -- (4,4);
        \draw (4,4) to [curve through ={(4.2,4) . . (4.5,3.6)}] (5,2);% curve
    \end{tikzpicture}
    \caption{Performance metrics.}
\end{figure}
\end{document}

Ergebnis:

Bildbeschreibung hier eingeben

Antwort1

Sie können einfach Funktionen zeichnen. Wenn Sie etwas mehr Hintergrundinformationen dazu liefern, woher dieses Diagramm stammt, werde ich eine bessere Funktion finden. Was ich hier tue, ist, einen elliptischen Bogen zu zeichnen. Ich verwende dafür Funktionen, aber Sie können genauso gut einfach die arcvon Ti bereitgestellte Syntax verwenden.kZ. Der Grund für die elliptischen Bögen ist, dass Ihre Funktionen bei x_max/2 vertikal zu werden scheinen. Und der Grund für das Zeichnen von Funktionen ist, dass ich vermute, dass Sie eine Theorie hinter diesen Diagrammen haben und das Diagramm letztendlich mit realen Funktionen füttern werden. (Und ich gehe davon aus, dass Sie keine Schwierigkeiten haben, die zusätzlichen Funktionen zu zeichnen.)

\documentclass{memoir}
\usepackage{amsmath,amssymb}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,calc,intersections}

\begin{document}
I guess that has now become more a mathematics problem. Let's assume you really
want a function that starts off at $(x_1,y_1)$ somewhere with slope 1 and then
has slope $-\infty$ at some other place. This defines an elliptical arc, which
can be parametrized by
\[ \gamma(\varphi)~=~\left(\begin{array}{c}
 x_0+a\,\cos(\varphi)\\ b\,\sin(\varphi)
\end{array}\right)\;.\]
Here, we have set a possible shift in $y$ direction to 0 since we want the slope
to become infinite when the curve hits the $x$--axis.
What is the angle at which the slope is 1? The slope is given by the ratio of
the derivatives of the coordinates, such that
\[ -\frac{b\,\cos(\varphi_1)}{a\,\sin(\varphi_1)}~\stackrel{!}{=}~1
\quad\curvearrowright\quad \varphi_1~=~-\arctan\left(\frac{b}{a}\right)\;.
\]
Now we want at the same time that
\[ \gamma(\varphi)~=~\left(\begin{array}{c}
 x_0+a\,\cos(\varphi_1)\\ b\,\sin(\varphi_1)
\end{array}\right)~=~
\left(\begin{array}{c}
x_0-\frac{1}{\sqrt{1+b^2/a^2}}\\
\frac{b/a}{\sqrt{1+b^2/a^2}}
\end{array}\right)
~\stackrel{!}{=}~
\left(\begin{array}{c}x_1\\ y_1\end{array}\right)\;.\]
This means that we can only adjust one parameter, say $b$, and the other
parameters are then fixed by
\[
 a^2~=~\frac{b}{y_1}\,\sqrt{b^2-y_1^2}\quad\text{and}\quad
 x_0~=~x_1-y_1+\frac{b^2}{y_1}\;.
\]
\begin{figure}[htbp]
    \centering
    \begin{tikzpicture}
        \draw[-{Latex[length=2.5mm, width=1.5mm]}] (0,0)--(6,0) node[anchor=north]{};
        \draw[-{Latex[length=2.5mm, width=1.5mm]}] (0,0)--(0,6) node[anchor=east]{};
        \node[anchor=south, rotate=90] at (-0.5,3) {SNR,~SNDR~[dB]};
        \node[anchor=north] at (3,-0.5) {Input~Signal~Amplitude~[dBv]};
        \node[anchor=north east] at (0,0) {0};

        \draw (0,0) -- (4,4);
        % in these examples I have set x_1 = y_1 = 4
        \def\xOne{4}
        \def\b{4.15}
        \pgfmathsetmacro{\a}{\b*sqrt((\b^2-\xOne^2))/4}
        \draw[name path=upper plot] plot[variable=\x,domain=180-atan(\b/\a):0,samples=50] 
        ({\xOne-(\xOne-\b^2/\xOne)+\a*cos(\x)},{\b*sin(\x)});
        \coordinate (max1) at({\xOne-(\xOne-\b^2/\xOne)+\a*cos(90)},{\b*sin(90)});
        \def\b{3.9}
        \def\xOne{3.7}
        \pgfmathsetmacro{\a}{\b*sqrt((\b^2-\xOne^2))/\xOne}
        \draw[dashed,name path=lower plot] plot[variable=\x,domain=180-atan(\b/\a):0,samples=50] 
        ({\xOne-(\xOne-\b^2/\xOne)+\a*cos(\x)},{\b*sin(\x)});
        \coordinate (max2) at
        ({\xOne-(\xOne-\b^2/\xOne)+\a*cos(90)},{\b*sin(90)});
        \coordinate (O) at (0,0);
        \draw[dotted] (O|-max1) -- (max1) node[above,pos=0.7]{SNR$_\mathrm{peak}$} --(O-|max1);
        \path [name path=horizontal 2] (max2) -- ++(2cm,0);
        \draw [dotted,name intersections={of=upper plot and horizontal 2, by={a0}}]
         (a0) -- ++(-2cm,0) node[left]{SNDR$_\mathrm{peak}$};
    \end{tikzpicture}
    \caption{Performance metrics.}
\end{figure}
\end{document}

Bildbeschreibung hier eingeben Sie können einen Parameter, \b, anpassen, um den Lichtbogen zu steuern. Und es ist ganz einfach, das Maximum usw. abzulesen, und Sie können Ti verwendenkZ, um damit alle möglichen Sachen zu machen, wie abgebildet.

verwandte Informationen