我们说我已经获得了名为“myData.dat”的数据。在表格中
x y
0 0
1 1
2 2
4 3
8 4
16 5
我需要从这些数据中找到以下内容:
然后我需要绘制数据并覆盖线条;下面是我要求的图片。
我知道如何获得单对点的斜率和y截距,并绘制数据和线的方程。例如,对于第1点和第5点:
set table
plot "myData.dat" using 0:($0==0 ? y1=$2 : $2)
plot "myData.dat" using 0:($0==4 ? y5=$2 : $2)
unset table
m1 = (y5 - y1)/(5-1)
b1 = y1 - m1*1
y1(x) = m1*x + b1
我是迭代(和gnuplot)的新手,我认为我的语法有问题。我已经尝试了很多东西但它们还没有奏效。我最好的猜测是它会以
的形式出现plot for [i=1:4] using 0:($0==1 ? y.i=$1 : $1)
do for [i=1:5]{
m.i = (y5 - y.i)/(5-i)
b.i = y.i - m.i*1
y.i(x) = m.i*x + b.i
}
set multiplot
plot "myData.dat" w lp
plot for [i=1:4] y.1(x)
unset multiplot
那么出了什么问题? gnuplot是否能够将循环计数器连接到变量?
答案 0 :(得分:1)
您的语法不正确。虽然还有其他方法可以执行您想要的操作,但对于使用word(var,i)
的实例,对您已有的最直接的修复方法是使用eval
来计算可以连接变量的字符串: / p>
do for [i=1:5]{
eval "m".i." = (y5 - y".i.")/(5-".i.")"
eval "b".i." = y".i." - m".i."*1"
eval "y".i."(x) = m".i."*x + b".i
}