我有一个简单的算法来计算数学模型的残差和一些有噪声的实验数据。目标是在已知振幅和频率的情况下找到相位。算法循环所有相位值(精确到小数点后3位),从0到2*pi。然后计算每个阶段模型每次计算的残差然后程序将每个阶段和剩余部分追加到各自的列表中。我知道我可以使用scipy.optimize来解决这个问题,但是我有理由想使用这个算法。我的问题是,如何检索与最小残值相关联的相位值程序如下所示:

import numpy as np
from numpy import loadtxt

data = loadtxt('foo.txt', float)

x = data[:,0]
y = data[:,1]

a = 1.5
f = 0.01
p = []
phase = 0.000
residuals = []


for i in range(0, 6284):
    p.append(phase)
    model = a*np.sin(2*np.pi*f*x+phase)
    res = sum((y-model)**2)
    residuals.append(res)
    phase += 0.001

print min(residuals)

关于如何检索与最小残差相关联的相位值的任何帮助都是有帮助的感谢

最佳答案

使用以下代码

p[residuals.index(min(residuals))]

08-24 20:45