我正在编写一个脚本,处理从signal_gen函数中表示的传感器数据。如你在testing函数中所看到的那样,它相当于循环的中心。由于该函数被调用多次,使得其速度有点慢,因此需要优化。
我阅读过可以使用向量化数组来替换for循环的方法,但是我无法理解i_avg [i]行应该如何编写,因为我们有单个元素y [i]乘以整个数组x在np.cos内部,而所有这些又仅仅是i_avg的一个迭代。
def testing(signal):
y = np.arange(0.0108, 0.0135, 0.001) # this one changes over time, set
#to constant for easier reading
x = np.arange(0, (len(signal)))
I_avg = np.zeros(len(y))
Q_avg = np.zeros_like(I_avg)
for i in range(0, len(y)):
I_avg[i] = np.array(signal * (np.cos(2 * np.pi * y[i] * x))).sum()
Q_avg[i] = np.array(signal * (np.sin(2 * np.pi * y[i] * x))).sum()
D = np.power(I_avg, 2) + np.power(Q_avg, 2)
max_index = np.argmax(D)
phaseOut = np.arctan2(Q_avg[max_index], I_avg[max_index])
#just a test signal
def signal_gen():
signal = np.random.random(size=251)
return signal