У меня есть массив x-данных длины 640 с просто реальными данными и массив y-данных длины 640, где каждое значение имеет действительную и мнимую часть. Я использовал код в этом ответе , где я определяю yBoth как:
yBoth = np.hstack([np.real(ydata), np.imag(ydata)])
, где np.real(ydata)
и np.imag(ydata)
оба имеют длину 640 при выполнении:
from scipy.optimize import curve_fit
import numpy as np
def drag_fit_func(x, A, S, t, B):
return A*np.exp(((x - t/2)/2*S)**2) + 1j*B*(A*((x - t/2)/S**2)*np.exp(((x - t/2)/2*S)**2))
def funcBoth(x, A, S, t, B):
N = len(x)
x_real = x[:N//2]
x_imag = x[N//2:]
y_real = np.real(drag_fit_func(x_real, A, S, t, B))
y_imag = np.imag(drag_fit_func(x_imag, A, S, t, B))
return np.hstack([y_real, y_imag])
yBoth = np.hstack([np.real(ydata), np.imag(ydata)])
poptBoth, pcovBoth = curve_fit(funcBoth, xdata, yBoth)
print(poptBoth)
Я получил эту ошибку:
ValueError: operands could not be broadcast together with shapes (640,) (1280,)
Как мне решить эту проблему?
И спасибо.