code: def mtFeatureExtraction(signal, fs, mt_win, mt_step, st_win, st_step):
      
  
      mt_win_ratio = int(round(mt_win / st_step))
      mt_step_ratio = int(round(mt_step / st_step))
  
      mt_features = []
  
      st_features, f_names = stFeatureExtraction(signal, fs, st_win, st_step)
      n_feats = len(st_features)
      n_stats = 2
  
      mt_features, mid_feature_names = [], []
      #for i in range(n_stats * n_feats + 1):
      for i in range(n_stats * n_feats):
          mt_features.append([])
          mid_feature_names.append("")
  
      for i in range(n_feats):        # for each of the short-term features:
          cur_p = 0
          N = len(st_features[i])
          mid_feature_names[i] = f_names[i] + "_" + "mean"
          mid_feature_names[i + n_feats] = f_names[i] + "_" + "std"
  
          while (cur_p < N):
              N1 = cur_p
              N2 = cur_p + mt_win_ratio
              if N2 > N:
                  N2 = N
              cur_st_feats = st_features[i][N1:N2]
  
              mt_features[i].append(numpy.mean(cur_st_feats))
              mt_features[i + n_feats].append(numpy.std(cur_st_feats))
              #mt_features[i+2*n_feats].append(numpy.std(cur_st_feats) / (numpy.mean(cur_st_feats)+0.00000010))
              cur_p += mt_step_ratio
      return numpy.array(mt_features), st_features, mid_feature_names
docs: Mid-term feature extraction