%Procura o ponto mais proximo ja sabendo qual o arquivo ou segmente

NomeDoArquivo = 'c://temp//a2.sig';
NomeDoArquivop = 'c://temp//a2.pos';
NomeDoArquivo2 = 'c://temp//a2_.sig';

%PontoMedido = Resp;
NI1 = 2;
NI2 = 20;
Peso1 = 0.5;
Peso2 = 0.5;
[PontoMedido] = superposicao(NI1, NI2, Peso1,Peso2)
%Numero de SVD usados
kSV = 25
NPoint = size(PontoMedido,2);

NumeroDeIteracaoNoArq = 25; %1436;

%Abri o arquivo
fid  = fopen(NomeDoArquivo,'rt');
fidp  = fopen(NomeDoArquivop,'rt');

%Shaper para o sinal onde ocorreu a interacao
SizeDelay = 25;
PontoMedidoModificado = zeros(1,NPoint);
PontoMedidoModificado(1:SizeDelay) = PontoMedido(8,1:SizeDelay);
PontoMedidoModificado(SizeDelay+1:NPoint) = PontoMedido(8,SizeDelay+1:NPoint)-PontoMedido(8,1:NPoint-SizeDelay);
PontoMedido(8,:)=PontoMedidoModificado;

for Iteracao1=1:NumeroDeIteracaoNoArq
	count = 18*50;

	[a count] = fscanf(fid,'%f\n', count);
%	[b connt2] = fscanf(fidp, '%f %f %f', 3);
	%organizo o Dado
	for k=0:(count/50)-1
		Dado1(k+1,:) = a(1+(k*50):50+(k*50))';
	end

	%Shaper para o sinal onde ocorreu a interacao	
	DadoModificado1 = zeros(1,NPoint);
	DadoModificado1(1:SizeDelay) = Dado1(8,1:SizeDelay);
	DadoModificado1(SizeDelay+1:NPoint) = Dado1(8,SizeDelay+1:NPoint)-Dado1(8,1:NPoint-SizeDelay);
    Dado1(8,:)=DadoModificado1;
    %Abri o arquivo
    fid2  = fopen(NomeDoArquivo2,'rt');
    for Iteracao2=1:NumeroDeIteracaoNoArq
	    count = 18*50;

    	[a count] = fscanf(fid2,'%f\n', count);
    %	[b connt2] = fscanf(fidp, '%f %f %f', 3);
    	%organizo o Dado
    	for k=0:(count/50)-1
    		Dado2(k+1,:) = a(1+(k*50):50+(k*50))';
    	end
    
    	%Shaper para o sinal onde ocorreu a interacao	
    	DadoModificado2 = zeros(1,NPoint);
    	DadoModificado2(1:SizeDelay) = Dado2(8,1:SizeDelay);
    	DadoModificado2(SizeDelay+1:NPoint) = Dado2(8,SizeDelay+1:NPoint)-Dado2(8,1:NPoint-SizeDelay);
        Dado2(8,:)=DadoModificado2;  
        %funcao que encontra os pesos k1, k2 que minimizam o erro
%        Dado = 0.5*Dado1 + 0.5*Dado2;
%        DadoModificado = 0.5*DadoModificado1+0.5*DadoModificado2;
            
        %Comparar o Dado com a medida
%    	erroRMS(1) = sqrt(sum((henkSVD(PontoMedido(1,:),kSV)-henkSVD(Dado(1,:),kSV)).^2)/kSV);
%    	erroRMS(2) = sqrt(sum((henkSVD(PontoMedido(2,:),kSV)-henkSVD(Dado(2,:),kSV)).^2)/kSV);
%    	erroRMS(3) = sqrt(sum((henkSVD(PontoMedido(3,:),kSV)-henkSVD(Dado(3,:),kSV)).^2)/kSV);
%    	erroRMS(4) = sqrt(sum((henkSVD(PontoMedido(7,:),kSV)-henkSVD(Dado(7,:),kSV)).^2)/kSV);

%    	erroRMS(5) = sqrt(sum((henkSVD(PontoMedidoModificado,kSV)-henkSVD(DadoModificado,kSV)).^2)/kSV);
    %	erroRMS(5) = sqrt(sum(((PontoMedido(8,:))-(Dado(8,:))).^2)/NPoint);

%    	erroRMS(6) = sqrt(sum((henkSVD(PontoMedido(9,:),kSV)-henkSVD(Dado(9,:),kSV)).^2)/kSV);
%    	erroRMS(7) = sqrt(sum((henkSVD(PontoMedido(13,:),kSV)-henkSVD(Dado(13,:),kSV)).^2)/kSV);
%    	erroRMS(8) = sqrt(sum((henkSVD(PontoMedido(14,:),kSV)-henkSVD(Dado(14,:),kSV)).^2)/kSV);
%    	erroRMS(9) = sqrt(sum((henkSVD(PontoMedido(15,:),kSV)-henkSVD(Dado(15,:),kSV)).^2)/kSV);
        ListaDeEletrodos = [1,2,3,7,8,9,13,14,15];
        for IndLista =1:9       
            hSVD = 0.5*henkSVD(Dado1(ListaDeEletrodos(IndLista),:),kSV)+0.5*henkSVD(Dado2(ListaDeEletrodos(IndLista),:),kSV);
            erroRMS(IndLista) = sqrt(sum((henkSVD(PontoMedido(ListaDeEletrodos(IndLista),:),kSV)-hSVD).^2)/kSV);          
        end

        erroTotal = mean(erroRMS);
    	ListaErro(Iteracao2,1) = erroTotal;
    	ListaErro(Iteracao2,2) = Iteracao2;

%    	ListaErro5(Iteracao,1) = erroRMS(5);
%    	ListaErro5(Iteracao,2) = Iteracao;

%    	ListaErroR(Iteracao,1) = ((erroTotal*9)-erroRMS(5))/8;
%    	ListaErroR(Iteracao,2) = Iteracao;	
    end
    fclose(fid2);
    
    [erroEmOrdem, Loc]   = sort(ListaErro(:,1));
    MelhoresPontos(Iteracao1,1) = erroEmOrdem(1);
    MelhoresPontos(Iteracao1,2) = Iteracao1
    MelhoresPontos(Iteracao1,3) = Loc(1);
%	if(Iteracao == 1)
%		erroMinimo = erroTotal;
%		DadoMinimo = Dado;
%		PosicaoMinima = b;
%		IteracaoMinima = Iteracao;
%
%		erroMinimo2 = erroTotal;
%		DadoMinimo2 = Dado;
%		PosicaoMinima2 = b;
%		IteracaoMinima2 = Iteracao;
%
%		erroMinimo3 = erroTotal;
%		DadoMinimo3 = Dado;
%		PosicaoMinima3 = b;
%		IteracaoMinima3 = Iteracao;
%	end

%	if(erroTotal <= erroMinimo)	
%		erroMinimo = erroTotal;
%		DadoMinimo= Dado;
%		PosicaoMinima = b;
%		IteracaoMinima = Iteracao;
%	end
%	if((erroTotal > erroMinimo)&(erroTotal <= erroMinimo2))	
%		erroMinimo2 = erroTotal;
%		DadoMinimo2= Dado;
%		PosicaoMinima2 = b;
%		IteracaoMinima2 = Iteracao;
%	end
%	if((erroTotal > erroMinimo2)&(erroTotal <= erroMinimo3))	
%		erroMinimo3 = erroTotal;
%		DadoMinimo3= Dado;
%		PosicaoMinima3 = b;
%		IteracaoMinima3 = Iteracao;
%	end

end

%fecha os arquivos
fclose(fid);
fclose(fidp);

%atribui Respostas
[erroEmOrdem2, Loc]   = sort(MelhoresPontos(:,1));
%[erroEmOrdem5, Loc5] = sort(ListaErro5(:,1));
%[erroEmOrdemR, LocR] = sort(ListaErroR(:,1));

%Resp  = DadoMinimo;
%RErro = erroMinimo;
%Rpos  = PosicaoMinima; 
%RPos = b;





