Сдвиг температурного сигнала во времени не оказывает влияния - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь взаимно коррелировать температурный сигнал с сигналом деформации.Я хочу получить временную задержку между двумя сигналами, а затем сдвинуть температурный сигнал во времени, чтобы я мог использовать его дальше для PCA.

Проблема в том, что я сделал взаимную корреляцию и все, но сигнал со смещенной температурой не имеет никакого эффекта, он такой же, как и у коррелированного сигнала.

Вы можете загрузить набор данных здесь: http://www.mediafire.com/file/r7dg7i9dacvpl2j/curve_fitting_ahmed.xlsx/file Вы можете посмотреть на цифры enter image description here

Первый сигнал - это сдвинутый сигнал, я полагаю

Последний ACF - это взаимно коррелированный сигнал

df = pd.read_excel(file_path, skip_blank_lines=False, skiprows=1)

def process_data_time_delay(temperature, strain, df):
    from scipy import signal

    # normalization before ACF
    def normalize(data):
        return (data - np.mean(data, axis=0).reshape((1, -11))) / (np.std(data, axis=0).reshape((1, -1)))

    # select subset of columns, seems relevant as a group
    SCOLS = ['T1', 'W_A1']

    # just to see the data
    f = plt.figure()
    ax = f.add_subplot(111)
    df[SCOLS[:2]].iloc[::10].plot(ax=ax)
    ax.set_title('Raw data')

    # normalization
    normalized = normalize(df[SCOLS].values)
    f = plt.figure()
    ax = f.add_subplot(111)
    ax.plot(np.arange(normalized.shape[0]), normalized[:, 0], label='TW_A1')
    ax.plot(np.arange(normalized.shape[0]), normalized[:, 1], label='W_A1')
    ax.set_title('Normalized')

    # ACF between two components
    x1x2 = np.correlate(normalized[:, 0], normalized[:, 1], 'full')

    # see the results
    f = plt.figure()
    ax = f.add_subplot(111)
    ax.plot(x1x2)
    ax.set_title('ACF')
    df['TIMESTAMP'] = pd.to_datetime(df['TIMESTAMP'])
    peaks_indices = signal.find_peaks_cwt(array(x1x2).flatten(), np.arange(1,10))
    print(peaks_indices)
    delta_index = np.argmax(peaks_indices);
    print(delta_index)
    delta_time = df['TIMESTAMP'][delta_index] - df['TIMESTAMP'][0]
    # assuming timestamps is a datetime64 numpy array that can be easily obtained from pandas;
    shifted_signal = x1x2[delta_index:]

    f = plt.figure()
    ax = f.add_subplot(111)
    ax.plot(shifted_signal)

    # mainloop
    plt.show()

    return x1x2

1 Ответ

0 голосов
/ 30 октября 2018

Сигнал должен быть похожим по форме, но со смещением во временной шкале.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...