标签: function-fitting

gnuplot-`set xrange [x_min:x_max]`是否限制用于函数拟合的范围?

一个简单的问题-使用set xrange [x_min:x_max]命令可以更改在绘图上绘制的范围。

使用gnuplot中的数据拟合工具拟合函数时,此命令是否还会限制使用的范围?有没有办法手动指定用于函数拟合的范围?(可能是该命令的一个猜测every?我是否需要超越xrange使用every?)

我问的原因是我正在使用xrange绘制放大到低值x区域的输出以更清楚地查看瞬态行为,但是我认为这可能是在xrange之外的较大x值处“切出”函数的值选择的地区?

gnuplot xrange curve-fitting data-fitting function-fitting

4
推荐指数
2
解决办法
9315
查看次数

gnuplot - 获取拟合参数错误,获取拟合输出值作为变量,将变量打印到屏幕

初始问题(部分回答)

我正在使用 gnuplot 的拟合例程来拟合某些数据的函数,并提取“特征衰减时间常数”。(我d在我的拟合函数中调用了这个参数。)

我使用脚本代码set fit quiet来防止大量文本被打印到终端。但是我现在无法知道最终的拟合值是多少!(除了检查日志文件......这是艰巨的......)

有没有办法可以获取最终的拟合参数值,将它们存储在变量中,然后打印该变量?

我想这是 2 个问题合二为一......如何打印变量值?

对初始问题的回答

因此,在玩弄 gnuplot 之后,我发现该print命令可以将变量打印到屏幕上,并且参数(例如)d已经可用作变量 - 即;它们已经是变量。

因此,我可以执行以下操作:print "d=",d- 此处的逗号用于分隔要打印的内容。所以我首先打印一个字符串,"d="然后是d.

下一个问题

如何获取我使用的变量的错误?例如; 如果我拟合一个带有参数 a、b 和 c 的函数,我如何在这些值上打印错误?

variables gnuplot curve-fitting data-fitting function-fitting

3
推荐指数
1
解决办法
5102
查看次数

由于“无法将序列乘以‘numpy.float64’类型的非 int”错误而无法拟合数据

我正在尝试使用 matplotlib 和 scipy 使用线性函数在 .txt 文件中拟合并绘制简单数据(a*x+b)。我遇到了有关测试功能的错误:"can't multiply sequence by non-int of type 'numpy.float64'"

我尝试过更改变量名称x,但遇到了同样的问题。大多数代码来自一个工作代码,该代码能够毫无问题地拟合数据,并对测试函数使用相同的定义。

import matplotlib.pyplot as plt
from scipy import optimize
import numpy as np
f=open("testData.txt","r")
x_data=[]
y_data=[]
trash=f.readline() #discards first line
for line in f: #reads x and y data from file
    x_read,y_read=line.split()
    x_data.append(float(x_read))
    y_data.append(float(y_read))

def test_func(x, a, b):
    return a*x+b

params, params_covariance = optimize.curve_fit(test_func, x_data, y_data, 
p0=[1, 1])
plt.figure(figsize=(6, 4))
plt.scatter(x_data, y_data)
plt.plot(x_data, test_func(x_data, params[0], params[1]), label='Fitted 
function')
plt.show()
Run Code Online (Sandbox Code Playgroud)

这是错误:

回溯(最近一次调用最后一次): …

python matplotlib scipy data-fitting function-fitting

3
推荐指数
1
解决办法
6280
查看次数

gnuplot - 如何计算 csv 文件列中的条目数?

我有一个包含函数拟合例程的 gnuplot 代码。

当必须拟合大量数据点时,此例程很慢。我的输入文件中的数据点数量是可变的,具体取决于我正在运行的一些模拟的参数。

我希望只适合 100 分。到目前为止,我一直通过手动计算输入文件中的条目数并除以 100 并将结果数用作拟合命​​令的“每 N”命令来执行此操作。

更多详情:

我使用的拟合命令是:

fit f(x) "output.csv" every N using 1:4:9 via a,b
Run Code Online (Sandbox Code Playgroud)

其中 N = integer_round_down(output_file_length / 100.0) - 在我的 gnuplot 脚本中手动替换 N 的值之前,我在计算器上手动计算。(好吧,除以 100,我是在脑子里做的,而不是在计算器上。)

有什么方法可以获取任何列中的条目数,例如 col 1、col 4 或 col 9...然后在我的脚本中使用变量来计算 N,而无需在每次更改模拟时编辑我的脚本参数?

csv plot gnuplot function-fitting

2
推荐指数
1
解决办法
3997
查看次数