我有这个功能,我想知道是否有一种方法可以对它进行矢量化,因为我在这上面运行了很多循环,它变得很慢。 w,x,y,z和n是常数,input_vec是长度为n
的向量def calc_v(w, x, y, z, input_vec, n):
v = np.empty(n)
v[0] = 1
for i in range(1, n):
past_v = v[i - 1]
past_input = input_vec[i - 1]
# UCL
part1 = (1 / past_v) * (x * (y - past_v) - ((w*w) / 2)) * z
part2 = w * (1 / math.sqrt(past_v)) * math.sqrt(z) * past_input
v[i] = past_v * exp(part1 + part2)
return v