обнаружение максимальных и минимальных пиков сигнала давления в реальном времени, а также его расчет - PullRequest
0 голосов
/ 28 мая 2020

Я обнаруживаю в реальном времени сигнал давления от датчика давления и пытаюсь построить его с помощью pyqtgraph. Мне удалось найти максимумы сигнала с помощью функции find_peaks из библиотеки scipy.

    self.peaktimer = QtCore.QTimer()
    self.peaktimer.setInterval(5000)
    self.peaktimer.timeout.connect(self.peak_calculator)
    self.peaktimer.start()

def update_plot_data(self):


    print(self.y)

    self.x = self.x[1:]  # Remove the first y element.
    self.x.append(self.x[-1] + 1)  # Add a new value 1 higher than the last.
    #self.x.append(measure)

    self.y = self.y[1:]  # Remove the first 
    self.y.append( randint(0,100))  # Add a new random value.
    #self.y.append( measuree)
    peaks.append(self.y)

    self.data_line.setData(self.x, self.y)  # Update the data.

# for finding highest peak values 
def peak_calculator(self):

    global peaks 

    self.indices = find_peaks(peaks, threshold=1)[0]

    print("result: ", len(self.indices))
    print("systolic", np.mean(self.indices)

    peaks = []

Есть ли возможность также найти минимумы (минимальное значение пиков) с помощью find_peaks?

1 Ответ

0 голосов
/ 28 мая 2020

Да, умножьте peaks на -1, это приведет к переворачиванию вашего сигнала вверх дном, при этом индексы останутся нетронутыми. То есть индексы пиков, найденные в -peaks, дают вам индексы минимумов в peaks, например ...

def peak_calculator(self):

    global peaks 
    self.indices = find_peaks(peaks, threshold=1)[0]

    peaks_min = peaks * -1
    indices_min = find_peaks(peaks_min, threshold=1)[0]

Высоты пиков в любом случае можно найти, если вы вернете свойства, а также индексы из find_peaks()

, например,

indices, props = find_peaks(peaks, threshold=1)
maxima_heights = props[‘peak_heights’]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...