# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""
import numpy as np
import matplotlib.pyplot as plt
import numpy.linalg as la
Data=np.array([[2.5, 2.4],
      [0.5, 0.7],
      [2.2, 2.9],
      [1.9, 2.2],
      [3.1, 3.0],
      [2.3, 2.7],
      [2.0, 1.6],
      [1.1, 1.0],
      [1.5, 1.6],
      [1.1, 0.9]],dtype=float)
(n,d) = np.shape(Data) #n instâncias e d variáveis

u=np.mean(Data, axis=0) #media de cada coluna

Dm = Data -u            #desvio da média
# =============================================================================
# Em alguns softwares como scilab, a operação Data - u não seria compreendida
# pois as dimensões de Data e u são diferentes
# Nesses casos pode fazer algo como U=np.ones((n,1))@u.reshape(1,d)
# Esta operação criaria uma matriz U de nxd onde em cada linha teria a média
# =============================================================================

Cv = (Dm.T@Dm)/(n-1)    #matriz covariância, poderia ser np.cov(Data.T)
print("Matriz de Covariância:\n")
print(Cv)
print("\nDesvio padrão, raiz quadrada das diagonais da matriz de covariância:")
dp=np.sqrt(np.diag(Cv)) #desvio padrão é a raiz quadrada da variância
print(dp)

#diagDp = np.diag(dp)
#multDp = np.ones((d,1))@dp.reshape(1,d)
#divCv = diagDp@multDp
#Cor = Cv/divCv
print("\nMatriz de Correlação:")
Cor = Cv/((np.diag(dp))@(np.ones((d,1))@dp.reshape(1,d))) #poderia ser np.corrcoef(Data.T)
print(Cor)    
