Bonjour,
J'ai un programme qui lit des données qui arrivent toutes les secondes sur un port série et je chercher a faire une régression linéaire toutes les 3 minutes sur ces données.

voila mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import time
import datetime
import serial
import csv
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
import matplotlib.dates as dates
 
ser = serial.Serial('COM4', 9600, timeout=1)
 
time_init=datetime.datetime.now()
list_data=[]  #liste contentant les donnees
list_delta=[] #liste contentant les deltas
list_time=[] #liste contenant le temps
test = str(datetime.timedelta(seconds=180.0))
 
#print (test)
b=True
 
 
# boucle qui lit les donnees toutes les 3 minutes
while b:
    data=ser.readline()     # lecture des donnees du port serie
    data=data.decode('ascii')  # decode les donnees
    time_data=datetime.datetime.now()  # heure des donnees
    delta=str(time_data - time_init)
 
    list_data.append(data)
    list_delta.append(delta)
    list_time.append(str(time_data))
 
    print(list_data)
 
    # si delta est strictement superieur a 3 minutes
    if delta > test:
        del list_time[0]     # supprime le premier temps car donnee vide
        for data in list_data:
            #print(data)
            y = np.array([data])
            ys = np.squeeze(y)
 
            print(ys)
 
        for time_data in list_time:
            #print(time_data)
            x = np.array(str(time_data))
            print(x)
        slope, intercept, r_value, p_value, slope_std_error = stats.linregress(x,ys)
 
        break
Cependant j'obtient l'erreur suivante :

n = len(x)
TypeError: len() of unsized object
Je ne vois pas comment faire pour résoudre cette erreur ..
Merci pour votre aide