我正在尝试使用 pgfplots 绘制简单的 Bode 图。经过大量研究,我放弃了 Bodegraph 包,因为它的文档很差,而且 gnuplot 有很多问题。因此,我使用激活了对数 x 轴的轴环境。下一个代码是显示问题的 tikzpicture 示例。
\begin{tikzpicture}
\begin{axis}[
width=0.8\linewidth,
height = 3cm,
xmode = log,
axis x line*=box,
axis y line*=box,
xmin=1e-2, xmax=1e2,% range for the x axis
ymin=-100, ymax = 100,
scale only axis ,
ytick distance=40,
xmajorgrids = true,
ymajorgrids = true,
title = Fase,
ylabel = $\phi$,
xlabel = $\omega$
]
\addplot[smooth,
blue,
ultra thick,
mark=none,
domain=1e-2:1e2,
samples=400,
trig format plots = deg]
{atan((2*0.1*(x/2))/(1-(x/2)^2))};
\end{axis}
\end{tikzpicture}
请注意,我使用trig format plots=true
来设置三角函数的度数。有人能帮我吗?这只是二阶系统的相角图。
提前致谢
答案1
我认为您展示的图是正确的,因为它正确地显示了您输入的公式。正如评论中提到的,您在 的参数中除以 1-x/2 atan
,并且当 x 趋近于无穷大时,atan(x) 的极限是 90 度。
percusse 在另一条评论中提到,你想使用它atan2
来代替。atan2
需要两个值,atan2(y,x)
。我不知道你应该使用什么样的表达方式,但作为一个例子,它(atan2(1,x)-45)*2
给出了类似于你期望的东西,尽管中间部分的曲线不那么陡峭。不过,我对这些东西不熟悉,所以我无法帮你找到更合适的公式。
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
width=0.8\linewidth,
height = 3cm,
xmode = log,
axis x line*=box,
axis y line*=box,
xmin=1e-2, xmax=1e2,% range for the x axis
ymin=-100, ymax = 100,
scale only axis ,
ytick distance=40,
xmajorgrids = true,
ymajorgrids = true,
title = Fase,
ylabel = $\phi$,
xlabel = $\omega$
]
\addplot[smooth,
blue,
ultra thick,
mark=none,
domain=1e-2:1e2,
samples=400,
trig format plots = deg]
{(atan2(1,x)-45)*2};
\end{axis}
\end{tikzpicture}
\end{document}