Python: построение графиков во времени с помощью файла с одним столбцом

0

Вопрос

Я должен написать функцию, которая позволит мне найти локальные значения max и min из ряда значений.

Данные для функции-это x, y каждого "пика". Выходными данными являются 4 вектора, которые содержат x, y max и min "пиков".

Чтобы найти максимальные пики, я должен "стоять" на каждой точке данных и проверять, что она больше или меньше, чем соседи с обеих сторон, чтобы решить, является ли это пиком (сохраните как пик макс/мин). Точки на обоих концах имеют только по 1 соседу, не рассматривайте их для этого анализа.

Затем напишите программу для чтения файла данных и вызовите функцию для вычисления пиков. Программа должна сформировать график, показывающий введенные данные с вычисленными пиками.

1-й файл представляет собой массив float64 (2001,) размера. Все данные приведены в столбце 0. Этот файл представляет амплитуду сигнала во времени, частота дискретизации составляет 200 Гц. Начальное время Asume равно 0.

График должен выглядеть так

Программа также должна создать файл .xls, в котором отображаются 2 таблицы: 1 с минимальными пиками, а другой с максимальными пиками. Каждая таблица должна иметь заголовок и состоять из 2 столбцов, в одном из которых указано время возникновения пиков, а в другом-амплитуда каждого пика.

Панды сюда не допускаются.

first file is a .txt file, and is single column, 2001 rows total
0
0.0188425
0.0376428
0.0563589
0.0749497
0.0933749
0.111596
0.129575
0.147277
0.164669
0.18172
...

Текущая попытка:

import numpy as np
import matplotlib.pyplot as plt

filename = 'location/file_name.txt'
T = np.loadtxt(filename,comments='#',delimiter='\n')

x = T[::1]  # all the files of column 0 are x vales

a = np.empty(x, dtype=array)
y = np.linspace[::1/200]

X, Y = np.meshgrid(x,y)
graph matplotlib python spyder
2021-11-23 23:57:10
1

Лучший ответ

0

Это делает то, о чем вы просите. Мне пришлось генерировать случайные данные, так как вы не поделились своими. Вы, безусловно, можете построить свою электронную таблицу из минимумов и максимумов значений.

import numpy as np
import matplotlib.pyplot as plt

#filename = 'location/file_name.txt'
#T = np.loadtxt(filename,comments='#',delimiter='\n')
#
#y = T[::1]  # all the files of column 0 are x vales

y = np.random.random(200) * 2.0

minima = []
maxima = []
for i in range(0,y.shape[0]-1):
    if y[i-1] < y[i] and y[i+1] < y[i]:
        maxima.append( (i/200, y[i]) )
    if y[i-1] > y[i] and y[i+1] > y[i]:
        minima.append( (i/200, y[i]) )

minima = np.array(minima)
maxima = np.array(maxima)
print(minima)
print(maxima)

x = np.linspace(0, 1, 200 )

plt.plot( x, y )
plt.scatter( maxima[:,0], maxima[:,1] )
plt.show()
2021-11-24 00:23:21

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................