2015-07-01 2 views
2

У меня есть сигнал, который изображен на следующем изображении:Извлечение из пиков сигнала

enter image description here

Я хочу, чтобы вычислить 4 высокие пики, которые происходят внутри сигнала. Есть ли какой-нибудь алгоритм, который может обнаружить мой сигнал?

+0

Возможно, вам будет оказана помощь в math.stackexchange.com. – Chris

+0

Какой расчет вы хотите? Только локальные максимумы уже записанных данных, затем используйте ['findpeaks'] (http://ch.mathworks.com/help/signal/ref/findpeaks.html) в Matlab. Если это не то, что вы ищете, пожалуйста, отредактируйте свой вопрос, чтобы включить дополнительную информацию о том, чего бы вы хотели достичь. – Matt

+0

Проблема с findpeaks, что он вычисляет все локальные максимумы всех пиков. Я хочу просто найти четыре основных пика. Более того, кроме пика я хочу найти длину пика. –

ответ

1

как насчет этого?

[localmax,maxind] = findpeaks(x); 
inversex = 1.01*max(x) - x; 
[localmin,minind] = findpeaks(inversex); 
%//this gives all maxima and minima, now you can compute the width. 

%//as for the top 4 peaks, surely you just sort and index 1:4 upon the result or in the beginning. 
+0

Зачем мне нужна первая строка в предлагаемом коде? –

+0

зная местные минимумы, вы можете вычислить ширину каждого локального максимума; так как вы хотите максимальные значения с максимальными значениями (верхняя 4), первая строка является фактическим ответом, где, когда вторая и третья строки помогут вам определить ширину – GameOfThrows

Смежные вопросы