Без наборов инструментов: выберите порог, который вы считаете приемлемым, затем просто наберите abs(x)>threshold
, что даст вам логический массив для индексации в freq
, давая частоты выше порога. Для повышения точности вы можете затем выполнить такие действия, как diff()
, в результирующем массиве и найти соседние индексы, а затем выбрать максимальное значение для этих последовательных индексов в этой последовательности в качестве «пика».
В качестве альтернативы вы можетеsort()
значений, сохраните индексы максимальных n
(в вашем случае 2) значений и внесите их в частотные массивы. Опять же, не очень надежный метод, но быстрый и грязный.
Комбинируя два вышеупомянутых метода, вы можете итеративно снизить пороговое значение в соответствии с отсортированным массивом, а затем проверять наличие близких вершин, их выдающуюся значимость и т. Д.
Если вы не хотите реализовывать все это самостоятельно, см. Ниже информацию об универсальной функции для этого.
Если вы хотите использовать набор инструментов для обработки сигналов, вы можете использоватьfindpeaks()
. Это дает вам индексы, которые вы затем можете использовать для индексации вашего частотного массива, чтобы получить желаемые частоты. Или используйте синтаксис peaks = findpeaks(data,x)
для непосредственного извлечения местоположения x
(частоты в вашем случае).