我陷入了for循环问题。
我有一个信号作为数组,我将其分成多个时期。
times = np.arange(0, duration, 1 / sfreq)
nse1 = np.random.rand(times.size) * nse_amp
x = amp * np.sin( 2 * np.pi * 200 * times ) + nse1
x2 = np.array_split(x,epochs)
我第二次这样做是为了获得Y信号。假设我的信号x的形状为(100),那么我的2个历元的分割数组应为(2,50)的形式。
现在我想在for循环中使用一个函数为拆分数组的每个段的每个值计算一个值...类似以下内容:
for i in range(0,epochs):
Rxy[i], freqs_xy[i] = mlab.csd(x2[i], y2[i], NFFT=nfft, Fs=sfreq)
所以我会得到一个Rxy的数组,如(2,50)
希望你能得到我想要的。
丹尼尔,问候
要构建Rxy
为数组,请首先为该数组分配空间:
Rxy = np.empty_like(x2)
freqs_xy = np.empty_like(x2)
然后您可以Rxy
使用循环填充行:
for i in range(2):
Rxy[i], freqs_xy[i] = mlab.csd(x2[i], y2[i], NFFT=nfft, Fs=sfreq)
顺便说一句,np.array_split(x,epochs)
返回数组列表。这与shape数组不同(2, 50)
。如果可以保证epochs
拆分x
成相等长度的数组,则可以使用
x2 = x.reshape(2, -1)
反而。然后x2
将是一个形状数组(2, 50)
。reshape
快于array_split
因为reshape
仅必须改变属性而array_split
必须分配和数据复制到新的阵列。Moroever,通常最好将数据保存在一个大数组中,而不是将一部分保存在数组列表中,因为列表中的计算通常需要Python循环,这是使用NumPy时性能的祸根。当然,有时无法避免Python循环,这在调用时似乎是这种情况mlab.csd
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句