Advertisement
Guest User

Untitled

a guest
Apr 21st, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.84 KB | None | 0 0
  1. import math
  2. import pandas as pd
  3. import numpy as np
  4. import matplotlib
  5. import matplotlib.pyplot as plt
  6.  
  7. from astropy import stats
  8. from mpl_toolkits.mplot3d import Axes3D
  9. from scipy.optimize import curve_fit
  10. def sqrt_N(x, c):
  11.     return c/np.sqrt(x)
  12.  
  13. # Entrega el valor de rms para la observación de los datos entregados
  14. def obtain_obs_error(data):
  15.     data_noise = stats.sigma_clip(data, sigma=3)
  16.     #plt.plot(np.linspace(-187.228, 137.228, data.size), data)
  17.     #plt.plot(np.linspace(-187.228, 137.228, data.size), data_noise,'.')
  18.     #plt.show()
  19.     return data_noise.std()
  20.    
  21. # Grafica la disminución de rms al hacer mas observaciones, comparando el ruido de la observación central
  22. # al ir sumando observaciones
  23. def test_rms_decrease():
  24.     min_size = 462
  25.     number_of_obs = 12
  26.  
  27.     # Guarda todas las observaciones en un arreglo
  28.     all_obs = []
  29.     for i in range(1,4):
  30.         for j in range(0,5):
  31.             all_obs.append(get_data('grupo'+ str(i)+ '/sdf_6'+str(j)+ '_6'+ str(j)).Temperature.values[0:min_size])
  32.    
  33.     # Calcula el rms la suma de las observacioes y las guarda en un arreglo
  34.     obs_rms = []
  35.     current_sum = np.zeros(min_size)
  36.     for i in range(0,number_of_obs):
  37.         current_sum = current_sum + all_obs[i]
  38.         obs_rms.append(obtain_obs_error(current_sum))
  39.  
  40.  
  41.     n_array = np.linspace(1,number_of_obs,number_of_obs)
  42.  
  43.     p0 = [0.01]
  44.     coeff, var_matrix = curve_fit(sqrt_N, n_array, obs_rms, p0=p0)
  45.     obs_rms_fit = sqrt_N(np.linspace(0.9,number_of_obs), coeff[0])
  46.  
  47.     fig = plt.figure()
  48.     plt.plot(n_array, obs_rms, '.')
  49.     plt.plot(np.linspace(0,number_of_obs), obs_rms_fit)
  50.     plt.title(r'Dismiución de $\Delta T_{out}$ al aumentar el número de observaciones')
  51.     plt.xlabel('Número de observaciones')
  52.     plt.ylabel(r'$\Delta T_{out}$')
  53.    
  54.     plt.show()
  55. test_rms_decrease()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement