Python: trasarea de-a lungul timpului cu o singură coloană de fișier

0

Problema

Trebuie să scrieți o funcție care permite-mi pentru a găsi locală max și min dintr-o serie de valori.

Datele pentru funcția este x, y ale fiecărui "de vârf". De ieșire sunt 4 vectori care conțin x, y max și min "vârfuri".

Pentru a găsi max vârfuri, trebuie să "stea" pe fiecare punct de date și verificați că este mare sau mai mică decât vecinii de pe ambele părți, în scopul de a decide dacă este un vârf (salvare ca max/min de vârf). Puncte la ambele capete doar 1 vecin, nu ia în considerare acele pentru această analiză.

Scrie apoi un program pentru a citi un fișier de date și de a invoca funcția pentru a calcula vârfuri. Programul trebuie să generați un grafic arată datele introduse cu cele calculate vârfuri.

1 fișier este o Matrice de float64 de (2001,) dimensiuni. Toate datele sunt în coloana 0. Acest fișier reprezintă amplitudinea unui semnal în timp, frecvența de eșantionare este de 200Hz. Presupune timp inițială este 0.

Graficul ar trebui sa arate asa

Programul trebuie, de asemenea, genera-o .fișier xls care prezinta 2 tabele; 1 cu min vârfuri, și un altul cu max vârfuri. Fiecare tabel trebuie să fi intitulat și constau din 2 coloane, una cu timp la care apar vârfuri, iar celălalt cu amplitudinea fiecărui vârf.

Nici Panda permis.

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
...

Curent de încercare:

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

Cel mai bun răspuns

0

Acest lucru face ceea ce ai cerut. Am avut de a genera date aleatoare, deoarece nu te-ai împărtăși ta. Cu siguranță puteți construi dvs. de calcul de la minimele și maximele de valori.

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

În alte limbi

Această pagină este în alte limbi

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................