我正在尝试拟合,但即使将maxfev增加到10000,我也各自使用maxfev。我想我做错了。
我将遍历4个大小相同(30X240X240)的图像堆栈,并在4个不同的图像上获得相同体素的值。因此,供您参考,我的循环将使用n = 30,d = 240
v1, v2, v3, v4 = 0.000, 0.000, 0.000, 0.000
xdata = np.array([50,300,600,1000])
D_map = np.zeros((n,d,d))
K_map = np.zeros((n,d,d))
def kurtosis(x, D, K):
return (-x * D) + (1/6 * (x **2)* (D **2) * K)
for i in range(n):
for r in range(d):
for c in range(d):
v1 = b50_data[i,r,c]
if v1 < 28:
D_map[i,r,c] = 0
K_map[i,r,c] = 0
else:
v2 = b300_data[i,r,c]
v3 = b600_data[i,r,c]
v4 = b1000_data[i,r,c]
ydata = np.array([v1,v2, v3, v4])
ydata = np.log(ydata/v1)
popt, pcov = curve_fit(kurtosis, xdata, ydata, maxfev= 10000)
D_map[i,r,c] = popt[0] * 1000
K_map[i,r,c] = popt[0]
好的,我已经解决了。
try: except:
通过所有需要很长时间的操作并返回错误。
我的代码现在是
try:
popt, pcov = curve_fit(kurtosis, xdata, ydata, maxfev= 5000)
except:
popt = [0,0]
D_map[i,r,c] = popt[0] * 1000
K_map[i,r,c] = popt[0]