# CALCULO da DIMENS�O DE CORRELA��O PARA UMA DADA DIMENS�O DE IMERS�O

# OBS: Os dados devem estar dispostos ao longo de uma coluna com header X


setwd("C:/Users/S�rgio/Documents/FisicaAmbiental/Dimensionalidade")



data <- read.csv('T_Sinop_Met_Jun2002.txt',header = TRUE, sep="\t")

ndat <- nrow(data) - 1

print(ndat)



#TEMPO DE DEFASAGEM E DIMENS�O DE IMERS�O:

TAO <- 10
Dim <- 10

LOGR_Min <- -2.0
LOGR_Max <- 2.0

deltalr <- (LOGR_Max - LOGR_Min)/400    # intervalo de log r dividido em 200 intervalos

RES <- matrix(0.0,nrow=401,ncol=3)


# CALCULA DA MATRIZ DE DIST�NCIAS para N dimens�es do Espa�o de Imers�o

DIST2N <- matrix(0.0,nrow=ndat,ncol=ndat)
RData <- matrix(0.0,nrow=401,ncol=1)

imin <- TAO*Dim
jmin <- TAO*Dim
imax <- ndat - TAO*Dim
jmax <- ndat - TAO*Dim


for(i in imin:imax){
print(i)
for(j in jmin:jmax){
	

		for(m in 1:Dim){

			DIST2N[i,j] <- DIST2N[i,j] + (data$X[i+(m-1)*TAO] - data$X[j+(m-1)*TAO])^2

			} #for m

	}
	}

#CALCULO DO COEFICIENTE DE CORRELA��O DE HEAVISIDE:


for(i in imin:imax){
print(i)
for(j in jmin:jmax){
	
	if(DIST2N[i,j] != 0.0){	
			LOG_DIST <- log10(sqrt(DIST2N[i,j]))
			indice <- as.integer((LOG_DIST - LOGR_Min)/deltalr)
			if(indice > 0 && indice < 401){RData[indice,1] <- RData[indice,1] + 1}

		}

	} # for j
	} # for i

LOGR <- LOGR_Min

for(k in 1:401){

	RES[k,1] <- LOGR
	
	LOGR <- LOGR + deltalr

	for(m in 1:k){

		RES[k,2] <- RES[k,2] + RData[m,1]
		} # for m

	RES[k,2] <- log10((RES[k,2] + ndat)/(ndat^2))   # Acrescenta-se ndat ao RES(ultado) para levar em conta os pr�prios pontos no c�mputo da dim corr


	} # for k

	

	plot(RES[,1],RES[,2],xlab="log r",ylab="log C", type="b")


# CALCULO DA RAZ�O logC / logr

ratio <- rep(0.0,times = 401)

ratioMAX <- 0.0

for(k in 2:400){

	ratio[k] <- ((RES[k,2] - RES[k-1,2])/(RES[k,1] - RES[k-1,1]) + (RES[k+1,2] - RES[k,2])/(RES[k+1,1] - RES[k,1]))/2
	RES[k,3] <- ratio[k]
	if(ratio[k] > ratioMAX) ratioMAX <- ratio[k]
	}

plot(RES[,1],ratio,xlab="log r",ylab="logC/logr", type="b")

write.table(RES,file = "Resultado", sep=" ", eol="\n")

print(ratioMAX)