我有一个 pgfplotstable,其中包含点的坐标,例如
\pgfplotstableread{
t x
0.0 0.0
1.0 2.0
3.0 5.0
6.0 10.0
11.0 12.0
}\points
我想创建另一个表格,其中包含第二点和第四点周围的斜率。我使用以下代码来计算斜率:
\foreach \j in {1,3} {% using foreach because in reality I am using a very large table
\pgfmathsetmacro{\jb}{\j + 1}% The index of the previous point
\pgfmathsetmacro{\ja}{\j - 1}% The index of the next point
\pgfplotstablegetelem{\j}{t}\of\loadedtable% The value of t in the current point
\pgfmathsetmacro{\t}{\pgfplotsretval}% Set the value of t in the variable \t
\pgfplotstablegetelem{\ja}{t}\of\loadedtable% The value of t of the previous point
\pgfmathsetmacro{\ta}{\pgfplotsretval}% Set the value in the variable \ta
\pgfplotstablegetelem{\ja}{x}\of\loadedtable% The value of x of the previous point
\pgfmathsetmacro{\xa}{\pgfplotsretval}% Set the value in the variable \xa
% Doing the same thing for the next point
\pgfplotstablegetelem{\jb}{t}\of\loadedtable%
\pgfmathsetmacro{\tb}{\pgfplotsretval}%
\pgfplotstablegetelem{\jb}{x}\of\loadedtable%
\pgfmathsetmacro{\xb}{\pgfplotsretval}%
% Computing the slope
\pgfmathsetmacro{\v}{(\xb - \xa)/(\tb - \ta)}%
}
但是它效果不是很好,我不知道如何使用它来创建一个带有斜率的新表。我的目标是找到一种方法将 t(时间)和 v(斜率)的值存储在新表中。有人能帮我正确地做到这一点吗?
答案1
做起来容易,但想清楚怎么做却很难。
顺便说一句,您实际上并不需要新表,因为您可以选择要使用/打印的列。
\documentclass{article}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstableread{
t x
0.0 0.0
1.0 2.0
3.0 5.0
6.0 10.0
11.0 12.0
}\points
\pgfplotstableset{create on use/v/.style=
{create col/expr={(\thisrow{x}-\prevrow{x})/(\thisrow{t}-\prevrow{t})}}}
\pgfplotstabletypeset[columns={t,x,v}]\points
\end{document}