我遇到了一个我不太了解的问题。
我有一个.bin文件,其中包含信号和噪声的时间序列。我有准确的时间数据,只切出有趣的部分。
我的问题是,振幅有时会很高,有时会像预期的那样。我认为我将问题分解为以下原因:
sampling_rate = 2e6
dt = np.dtype(np.int32)
# get Timedata
start_raw_L1 = 261.2 # good_signal
count_raw_L1 = 1.315
# start_raw_L1 = 261.4 bad_signal
# count_raw_L1 = 1.315
start_L1 = np.int64(start_raw_L1*sampling_rate*4)
count_L1 = np.int64(count_raw_L1 * sampling_rate)
# L1
bin_data = open(bin_file, "rb")
bin_data.seek(start_L1, os.SEEK_SET)
data_L1 = np.fromfile(bin_data, dtype=dt, count=count_L1, sep='')
bin_data.close()
# Plot
plt.plot(data_L1)
因此,我选择哪个时间似乎很重要?如果我只是稍微改变开始时间,信号的幅度高度就会改变,我不明白为什么?也许有人可以帮助我。
非常感谢! 最好的祝福 巴斯蒂安
good_signal bad_signal
答案 0 :(得分:0)
int(261.4*2e6*4)
给出2091199999。这不是4的倍数。问题是261.4 * 2e6给出了522799999.99999994,而不是您预期的522800000。
在转换之外将乘数4移至整数:4*int(261.4*2e6)
得到2091199996。您可能更喜欢4*round(261.4*2e6)
,得到2091200000。在您的代码中,这意味着使用例如
start_L1 = 4*np.int64(start_raw_L1*sampling_rate)