Loops Gnuplot工作流程,涉及多个拟合循环
我想在gnuplot中执行以下操作: 阅读我的文件,这些文件被方便地标记为“filenameN.txt”,其中N是第N个文件 使用,bN,…,将一些多项式fN(x)拟合到数据中,。。。 并使用multiplot在单个图形(多个绘图)中绘制所有这些图形 但是,我无法使用gnuplot中可用的循环来实现这一点。 例如,工作原理是创建一个文件,该文件符合我对N的要求,然后运行一个传递N=1…M的外部循环 这会产生M个图,但不会产生单个多点图 为了实现这一点,我需要为拟合指定变量名(f1、f2、…a1、a2、…)(因为我可能希望以某种方式将所有变量一起使用) 我还希望plot循环在multiplot中生成简单的plot(每个plot包含数据及其拟合,M次),而不是第一个plot包含所有行,其余plot为空的multiplot 那么我有两个问题:Loops Gnuplot工作流程,涉及多个拟合循环,loops,gnuplot,Loops,Gnuplot,我想在gnuplot中执行以下操作: 阅读我的文件,这些文件被方便地标记为“filenameN.txt”,其中N是第N个文件 使用,bN,…,将一些多项式fN(x)拟合到数据中,。。。 并使用multiplot在单个图形(多个绘图)中绘制所有这些图形 但是,我无法使用gnuplot中可用的循环来实现这一点。 例如,工作原理是创建一个文件,该文件符合我对N的要求,然后运行一个传递N=1…M的外部循环 这会产生M个图,但不会产生单个多点图 为了实现这一点,我需要为拟合指定变量名(f1、f2、…a1、
- 如何分配变量名
- 如何在多点布局中使用循环
fstr(N) = sprintf('f%d(x) = a%d*x**2 + b%d*x + c%d', N, N, N, N)
eval(fstr(1))
这定义了函数f1(x)=a1*x**2+b1*x+c1
fitstr(N) = sprintf('fit ''filename%d.txt'' f%d(x) via a%d,b%d,c%d', N, N, N, N, N)
然后你先做所有的配合:
do for [i=0:N] {
eval(fstr(i))
eval(fitstr(i))
}
然后用点绘制每个数据文件,用线
绘制相应的拟合。为了将所有绘图都绘制在一个图形中,必须使用单个plot
命令并用逗号分隔绘图
但为了将拟合和数据分组到键中,您可以使用replot
添加绘图。您必须使用宏来获得绘图中的正确函数,eval
在这里不起作用:
set style data points
set style func lines
plot 'filename0.txt' lt 1, f0(x) lt 1
set macros
do for [i=1:N] {
f = sprintf('f%d(x)', i)
replot sprintf('filename%d.txt', i) lt (i+1), @f lt (i+1)
}
只需将所有内容放在一个文件中并使用它运行gnuplot