如何在函数声明中改变 \x 并仍然绘制它?

如何在函数声明中改变 \x 并仍然绘制它?

我可以绘制以下 MWE

\documentclass[beamer,crop]{standalone}
\usepackage{times}
\usepackage{pgfplots}
\usepackage{physics}

\pgfplotsset{
  nice_axis/.style={
    xlabel={$f \cdot T_c$},
    ylabel={$10 \cdot \log_{10}\left( \abs{P_\sqcap \left( T_c \cdot f \right)}^{2} \right)$},
    grid=both,
    axis lines=box,
    domain=-10:10,
  }
}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[
    nice_axis,
    declare function={
    P_sqr(\x) = sin(pi*\x)/(pi*\x);
  },
  ]
    \addplot[black, thick, mark=none] {10*log10(abs(P_sqr(\x)))};
  \end{axis}
\end{tikzpicture}

\end{document}

但是,如果\x进行了其他更改,例如,\fTc则无法正确编译。我收到以下错误:

./PSD_rect_pulse.tex:26:PGF 软件包数学错误:抱歉,无法将输入 '' 解析为浮点数。不可读部分位于 '' 附近。(在 '10*log10(abs(P_sqr()))' 中)。

我认为\x\addplot 有特殊含义,会尝试绘制它。如果是这样,是否要改变此行为以便\x通过其他方式绘制它?

答案1

\x是变量的默认名称,但您可以使用任何您想要的名称,只要您告诉它pgfplots

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}

\pgfplotsset{
  nice_axis/.style={
    xlabel={$f \cdot T_c$},
    ylabel={$10 \cdot \log_{10}(|P_\sqcap ( T_c \cdot f )|^{2})$},
    grid=both,
    axis lines=box,
    domain=-10:10,
  }
}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[
    nice_axis,
    declare function={
    P_sqr(\x) = sin(pi*\x)/(pi*\x);
  },
  ]
    \addplot[variable=\pippo,black, thick, mark=none] {10*log10(abs(P_sqr(\pippo)))};
  \end{axis}
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容