Advertisement
Guest User

Untitled

a guest
Apr 25th, 2017
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.73 KB | None | 0 0
  1. from numpy import *
  2. import numpy as np
  3. import math
  4. import os
  5. import matplotlib.pyplot as plt
  6. from io import StringIO
  7.  
  8. def file_to_array_csv(filename):
  9.     dir = os.path.dirname(__file__)
  10.     with open(os.path.join(dir, filename), 'r') as file:
  11.         return np.array([line.strip().split(',') for line in file]).astype(np.float)
  12.  
  13. def file_to_array_txt(filename):
  14.     dir = os.path.dirname(__file__)
  15.     data = np.loadtxt(os.path.join(dir, filename))
  16.     return data
  17.  
  18. def corr(sinal_A,sinal_B,janela):
  19.     # sinalA e sinalB tem que ter o mesmo temanho
  20.     # e mesma frequência de aquisição
  21.     # Janela: se vc quer -100 < n < 100, janela = 100, janela em PONTOS
  22.     N = len(sinal_A)
  23.     mean_A = sinal_A.sum(axis=0)/N
  24.     mean_B = sinal_B.sum(axis=0)/N
  25.     flut_A = sinal_A - mean_A * np.ones((1, N))
  26.     flut_B = sinal_B - mean_B * np.ones((1, N))
  27.     var_A = np.dot(flut_A,flut_A.T)/N
  28.     var_B = np.dot(flut_B, flut_B.T) / N
  29.     sigma_A = math.sqrt(var_A)
  30.     sigma_B = math.sqrt(var_B)
  31.     c = np.zeros((1, 2*janela+1))
  32.     n_array = np.array([range(-janela, janela + 1)])
  33.     for n in range(-janela, janela + 1):
  34.         M = N - abs(n)
  35.         term = 0
  36.         for m in range(M):
  37.             if n < 0:
  38.                 term = term + flut_A[0,m]*flut_B[0,m+abs(n)]/(M*sigma_A*sigma_B)
  39.             if n >= 0:
  40.                 term = term + flut_A[0,m+abs(n)]*flut_B[0,m]/(M*sigma_A*sigma_B)
  41.             # print(term)
  42.         c[0,janela+n] = term
  43.         # print(c)
  44.     return c,n_array
  45.  
  46. if(__name__ == '__main__'):
  47.  
  48.     filename = 'TCABR.txt'
  49.     A_orig = file_to_array_txt(filename)
  50.     sinal_t = A_orig[:,0]
  51.     sinal_A = A_orig[:,1]
  52.     sinal_B = A_orig[:,2]
  53.     janela = 25
  54.     c, n = corr(sinal_A,sinal_B,janela)
  55.     plt.plot(n[0,:],c[0,:])
  56.     plt.title('Correlação cruzada TCABR_A e TCABR_B')
  57.     plt.xlabel('Defasagem (n)')
  58.     plt.ylabel('Correlação')
  59.     plt.grid(True)
  60.     plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement