def feature_extraction_live(w_emg, w_imu, feature_set=Constant.rehman): """ Extracts the features of a given feature-set from the given raw data :param w_emg:matrix The matrix of the windowed raw data for the EMG signals :param w_imu:matrix The matrix of the windowed raw data for the IMU signals :param feature_set:string From this feature-set the features are extracted for extraction :return:matrix Matrix of extracted features. By default the features for EMG and IMU data will be combined """ feature_emg, feature_imu = [], [] for x in w_emg: feature = [] for n in range(8): if feature_set == Constant.georgi: feature.extend( Feature_extraction.georgi([y[n] for y in x], sensor=Constant.EMG)) elif feature_set == Constant.rehman: feature.extend(Feature_extraction.rehman([y[n] for y in x])) elif feature_set == Constant.robinson: feature.extend(Feature_extraction.robinson([y[n] for y in x])) elif feature_set == Constant.mantena: feature.extend(Feature_extraction.mantena([y[n] for y in x])) else: print("Could not match given feature set") feature_emg.append(feature) for x in w_imu: feature = [] for n in range(9): if feature_set == Constant.georgi: feature.extend( Feature_extraction.georgi([y[n] for y in x], sensor=Constant.IMU)) elif feature_set == Constant.rehman: feature.extend(Feature_extraction.rehman([y[n] for y in x])) elif feature_set == Constant.robinson: feature.extend(Feature_extraction.robinson([y[n] for y in x])) elif feature_set == Constant.mantena: feature.extend(Feature_extraction.mantena([y[n] for y in x])) else: print("Could not match given feature set") feature_imu.append(feature) features = [] for i in range(len(feature_imu)): f = [] for x in np.asarray([feature_emg[i], feature_imu[i]]).flatten('F'): f.extend(x) features.append(f) return features