示例#1
0
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