我尝试生成具有特定频段的信号。 我试过了& for-loops,但没有得到足够的解决方案。
import numpy as np
amp = 1.
sfreq = 1000.
duration = 1000.
nse_amp = 0.9
#____
freq_steps = 0.1
freq_start = 200
freq_end = 220
freq_band = np.arange(freq_start,freq_end,freq_steps)
sig_freq1 = freq_band
#____
n_epochs = 120
epoch_length = 1 # make epoch of 1 second each
times = np.arange(0,epoch_length,1/(sfreq))
def simulate_x_y(times, n_epochs, amp, sig_freq1, nse_amp):
x = np.zeros((n_epochs, times.size))
for i in range(0, n_epochs):
for j in xrange(freq_start, freq_end):
x[i] = amp * np.sin(2 * np.pi * freq_band[j] * times)
return x
我希望x的频段为200到220.此外,我不希望我的数组x.shape (120, 1000)
的内容未被更改。
有没有人做过类似的事情?
答案 0 :(得分:1)
解决了这个问题。 它比我预期的要容易。对于每个好奇的人。
import numpy as np
amp = 1.
sfreq = 1000.
duration = 1000.
nse_amp = 0.9
freq1_start = 200
freq1_end = 300
freq_band1 = np.linspace(freq1_start, freq1_end, times.size)
#____
n_epochs = 120
epoch_length = 1 # make epoch of 1 second each
times = np.arange(0,epoch_length,1/(sfreq))
def simulate_x_y(times, n_epochs, amp, freq_band1):
x = np.zeros((n_epochs, times.size))
for i in range(0, n_epochs):
x[i] = (amp * np.sin(2 * np.pi * freq_band1 * times))
return x