Определение частоты графика путем нахождения координат пиков

#python #python-3.x

#python #python-3.x

Вопрос:

В настоящее время я пытаюсь определить частоту этого графика зависимости положения от времени:

1

где временные и позиционные наборы данных представляют собой списки с плавающей точкой. Я пытался использовать scipy.signal.find_peaks imported as fp , но когда я запускаю этот код:

     peaks,_ = fp(pos)
    peak_times = []
    
    for i in range(len(peaks)):
        peak_times.append(t[i])
    
    peak_dists = [current-next for (current,next) in zip(peak_times,peak_times[1:])]
    approx_freq = sum(peak_dists)/len(peak_dists)
    
    return approx_freq
 

Я получаю ошибку типа: typeError: only integer scalar arrays can be converted to a scalar index

Что происходит не так? И как я могу это исправить?

Комментарии:

1. Где именно вы получаете ошибку?

2. Пожалуйста, проверьте мой ответ ниже и дайте мне знать, если это вам поможет.

Ответ №1:

Я заметил несколько ошибок в вашем коде. Вот предлагаемые исправления:

 peaks,_ = fp(pos)
peak_times = []

for i in peaks: # notice correction here! No range or len needed.
    peak_times.append(t[i])

peak_dists = [next-current for (current,next) in zip(peak_times,peak_times[1:])] # swapped next with current for positive result
approx_freq = 1/(sum(peak_dists)/len(peak_dists)) # take the inverse of what you did before
 

Удачи!