Улучшение алгоритма для измерений от пика к пику - PullRequest
0 голосов
/ 29 марта 2020

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

    def stepdown(self):
        peak_location_y = self.spec[self.peak_idx]
        peak_indcies = self.peak_idx
        spec_y = self.spec

        neg_peak = []
        for peak_index, peak_y in zip(peak_indcies, peak_location_y):
            i = 1
            tmp = [0]
            try:
                while (
                    peak_y >= spec_y[peak_index + i]
                    and
                    spec_y[peak_index + i - 1] >= spec_y[peak_index + i]
                ):
                    tmp.append(peak_index + i)
                    i += 1
                neg_peak.append(tmp[-1])
            except IndexError:
                print("Index Error")

        return neg_peak

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

1 Ответ

0 голосов
/ 02 апреля 2020

Было бы замечательно, если бы вы предоставили остальную часть класса, например, что такое self.spe c?

Кроме того, вы могли бы предоставить некоторые подробности о том, как вы собираетесь работать с алгоритмом.

Поскольку вы отметили scipy, я рекомендую вам проверить scipy.signal.find_peaks, если вы еще этого не сделали.

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