Advertisement
kristina7

СНЗ - Лаб 6 - Задача 2

Jan 22nd, 2018
728
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 25.20 KB | None | 0 0
  1. """
  2.    Calculates stats from the provided list xnp, based on the stats config object.
  3.    :param stat_config: Configuration for which stats to be computed.
  4.    :param x: The time series list.
  5.    :param offset: Offset of the values so some stats can be calculated
  6.    :return:
  7.    """
  8.     stats_all_names = ['len', 'min', 'max', 'range', 'mean', 'hmean', 'gmean', 'var', 'std', 'skew', 'kurtosis',
  9.                        'median', 'mode', 'energy', 'energy_sample', 'snr']
  10.  
  11.     xnp = np.array(x)
  12.     n = len(x)
  13.     if n == 0:
  14.         values = [0 for i in range(len(stats_all_names))]
  15.         return values, stats_all_names
  16.     values = [n]
  17.     vmin = float(min(xnp))
  18.     if vmin < 1:
  19.         offset = 1 + abs(vmin)
  20.     else:
  21.         offset = 0
  22.     vmax = float(max(xnp))
  23.     vrange = vmax - vmin
  24.     vmean = float(np.mean(xnp))
  25.     vstd = float(np.std(xnp))
  26.     venergy = float(sum(np.array(xnp) ** 2))
  27.     venergy_sample = venergy / n
  28.     snr = 0.0
  29.     if vstd != 0:
  30.         snr = vmean / vstd
  31.     values.append(vmin)
  32.     values.append(vmax)
  33.     values.append(vrange)
  34.     values.append(vmean)
  35.     values.append(float(sp.hmean(xnp + offset)))
  36.     values.append(float(sp.gmean(xnp + offset)))
  37.     values.append(vstd ** 2)
  38.     values.append(vstd)
  39.     values.append(sp.skew(xnp))
  40.     values.append(sp.kurtosis(xnp))
  41.     values.append(np.median(xnp))
  42.     vmode = sp.mode(xnp)
  43.     vmode = float(vmode[0][0])
  44.     values.append(vmode)
  45.     values.append(venergy)
  46.     values.append(venergy_sample)
  47.     values.append(snr)
  48.     return values, stats_all_names
  49.  
  50. if __name__ == "__main__":
  51.     x = np.array(X_data)
  52.     shift = 1  # pomestuvanje pomegu podviznite prozorci
  53.     w_long = int(input())  # dolzina (broj na otcituvanja) na dolgiot prozorec
  54.     w_short = int(input())  # dolzina (broj na otcituvanja) na kratkiot prozorec
  55.     for i in range(max(w_short, w_long), len(X_data), shift):
  56.         result = []
  57.         for j in range(0, len(x[0, :])): #x.shape[1]):
  58.             x_winow_long = x[i - w_long:i, j]
  59.             x_winow_short = x[i - w_short:i, j]
  60.             s1, stat_names = stats_calculate_all(x_winow_long)
  61.             s2, _ = stats_calculate_all(x_winow_short)
  62.             long_MVA = s1[4]  # Moving Average long window
  63.             short_MVA = s2[4]  # Moving Average short window
  64.             # broj na primerok, broj na kolona, vrednost na primerokot i kolonata
  65.             # razlika od tekovna vrednost i prosek od dolg prozorec
  66.             # razlika od tekovna vrednost i prosek od kratok prozorec
  67.             # razlika od pomegu prosek vo dolg i kratok prozorec
  68.             result.extend((x[i, j]+0.0, round(long_MVA,2), round(short_MVA,2), round(long_MVA - short_MVA,2)))
  69.         print(i, result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement