def kalman_filter_classification_times(data_folder): """ Measures the time needed to classify an observation with the Kalman filter algorithm. :param data_folder: Folder name where the data is located. :return: Time needed to evaluate the Kalman filter algorithm (in seconds). """ obs_set = observations_set.ObservationROISet.fromfolder(data_folder) obs_set.synchronize_average() Fk = np.eye(4) Fk[0, 2] = 1 Fk[1, 3] = 1 Hk = np.eye(4) Qk = np.eye(4) Rk = np.eye(4) Pk_minus = np.eye(4) initial_status = np.asarray([16, 16, 0, 0]) # Creates the Kalman filter. kalmanModel = KalmanFilter(Fk, Hk, Qk, Rk, Pk_minus, initial_status) score = np.empty((obs_set.num_observations(), )) classification_time = 0 for n in range(obs_set.num_observations()): print( str(n) + " / " + str(obs_set.num_observations()) + " " + obs_set.names_vector[n]) observations_test = obs_set.select_observations(n, inplace=False) # Evaluates the anomaly score for the normal/normal noise data. start = time.time() score[n] = kalmanModel.evaluate_observation(observations_test) end = time.time() classification_time += end - start return classification_time / obs_set.num_observations()