Я столкнулся с проблемой и хотел попросить ваши предложения.Обнаружение подъемов в массиве. (плотность значений)
Я кодирую в c/C++, и у меня есть массив, как показано ниже.
A[40]={0,0,1,0,2,7,18,45,80,85,88,91,88,65,12,3,0,1,0,2,1,2,5,45,88,89,78,79,65,12,5,2,1,0,0,1,0,0,1}
Как вы можете видеть, есть 2 подъема, которые мы также можем назвать их кривыми. Этот массив сохраняет значение сигнала в реальном времени относительно времени. Он работает как очередь и обновляется для каждого нового значения.
Я хочу обнаружить и подсчитать рост, я пробовал некоторые методы до сих пор, но пока не смог найти согласованное решение.
Мой вопрос: как я могу определить эти кривые и сказать, что в массиве A есть 2 кривых?
Знаете ли вы какой-либо хороший способ их обнаружения когерентно? Или есть способ или что-то для обработки такого рода сигналов?
Мне действительно нужен ответ для продвижения по моему проекту, поэтому все ваши ответы приветствуются. Заранее спасибо.
Возможно, вы захотите взглянуть на нечто вроде БПФ. Если данные чистые и простые, вы можете просто искать точки перегиба (т. Е. Изменение знака в градиенте). – Flexo
вы можете сделать что-то более простое, чем БПФ - попробуйте передвигающееся окно, чтобы определить, «вы поднимаетесь» или «бросаете», сравнивая последние значения N с предыдущими значениями N или что-то в этом роде. пока капли/подъемы более или менее одно в одном направлении, вы можете легко их подсчитать. –
Другая альтернатива - сглаживание кривой, а затем поиск локальных максимумов. Сглаживание поможет избежать появления локальных максимумов в виде пиков. –