【问题标题】:Wrong Signal Amplitude reading .bin-File (seems randomly wrong?)错误的信号幅度读取 .bin-File(似乎随机错误?)
【发布时间】:2019-03-30 20:40:33
【问题描述】:

我遇到了一个我不太明白的问题。

我有一个 .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

【问题讨论】:

    标签: python numpy binary seek fromfile


    【解决方案1】:

    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)
    

    【讨论】:

    • 就是这样,非常感谢!在我的代码中完美运行。
    猜你喜欢
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    相关资源
    最近更新 更多