如何使信号居中以从零开始

How to center the signals to start around zero

我一直在处理一些传感器数据,我遇到了每一个数据并意识到一些传感器并不是从零开始的。所以,我想知道有没有办法能够将信号移动到中心?有关信号图和单个图,请参见下图。

可以在此聊天中找到其中一个传感器的示例 (https://chat.whosebug.com/rooms/238608/signal)

代码: (获取信号)

for fp in DataPathList:
    k += 1
    # print(k)
    # Load spreadsheet:
    print('Opened file number: {}'.format(fp))
    dataset = np.loadtxt(fname=fp)
    y = dataset[:, column_no]
    y_signal[k] = np.array(y)
    y_S1_max_signal[k] = np.max(np.array(dataset[:, 0]))
    S_F = 1000
    N = np.array(y_signal[k]).shape[0]
    S_T = 1 / S_F
    t_n = S_T * N  # seconds of sampling
    x_time = np.linspace(0, t_n, N)

编辑 1:

我能够通过用信号的均值减去信号来解决这个问题,并设法将绘图从 0 开始。但是,我有一个问题,这会导致我的数据发生很大变化吗?

for fp in DataPathList:
    k += 1
    # print(k)
    # Load spreadsheet:
    print('Opened file number: {}'.format(fp))
    dataset = np.loadtxt(fname=fp)
    y = dataset[:, column_no]
    y_signal[k] = np.array(y)
    y_signal[k] = np.array(y) - np.mean(np.array(y))
    y_S1_max_signal[k] = np.max(np.array(dataset[:, 0]))
    S_F = 1000
    N = np.array(y_signal[k]).shape[0]
    S_T = 1 / S_F
    t_n = S_T * N  # seconds of sampling
    x_time = np.linspace(0, t_n, N)

您可能想要 post 编码以便人们能够更好地帮助您。通常,您可能想要做的是将峰值置于 0 的中心。如果您有一个 numpy 数组,请使用 np.argmax(array) 找到最大值的位置。然后在 matplotlib 中,确保从 xspace 中减去该索引(x 轴上的 list/array)。