%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%% PROGRAMME PRINCIPAL DU TP3 %%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear all;
close all;
clc;


% ------------------------------------------------------- %
% --------- Déclaration de variables -------------------- %
% ------------------------------------------------------- %
P = 2;
samples = 10000;
snr = 15; % vecteur ligne des SNRs (Signal-to-Noise Ratio) des P sources (en pratique < 15dB)
sigmaB = sqrt(1); % écart type du bruit (identique pour chaque capteur)
sigmaS = diag(sigmaB * 10^(snr/20)); %écart type des sources
N = 10; %nombre d'électrodes
rayon_Scalp= 9.2; %(en cm) modele de tete de [Rush & Driscoll, 1968] sphérique à 3 couches: rayon du scalp
[r,spher] = capteur(rayon_Scalp,N);
rayon_Cerveau = 8; %(en cm) modele de tete de [Rush & Driscoll, 1968] sphérique à 3 couches: rayon du Cerveau
points = 100;
teta = Grille_TPSP(rayon_Cerveau,points);
nbr_tetas = size(teta,2)
T = 50; %nombre de points de la fenêtre de Blackman
crit = 1e-6; %critère d'arrêt de l'ALS
itmax = 1000; %nombre d'itérations max de l'ALS
for m=1:nbr_tetas
    A_teta(:,m) = gainmatrix_TPSP(r, teta(:,m), teta(:,m)/norm(teta(:,m)));
end
rho = [teta(:,500),teta(:,5000)]; %position des 2 dipoles épileptiques
phi = rho/norm(rho); %leur orientation


%----------------------------------------------------------------------------- %
%------------------ Construction des observations ---------------------------- %
%----------------------------------------------------------------------------- %

%(à compléter)


% ---------------------------------------------------------------------------- %
% --------------- Identification de la matrice de transfert A ---------------- %
% ---------------------------------------------------------------------------- %

% construction du tableau d'ordre 3 (des sources et des observations)
%(à compléter)

% décomposition CP du tableau d'ordre 3 
%(à compléter)


% ---------------------------------------------------------------------------- %
% --------------- Identification de la position des P dipôles ---------------- %
% ---------------------------------------------------------------------------- %

%(à compléter)


% --------------------------------------------------------------------------- %
% ---------------------------- AFFICHAGE GRAPHIQUE -------------------------- %
% --------------------------------------------------------------------------- %

%(à compléter)

figure(1);
%Représentation des positions  Capteurs
plot3(r(1,:),r(2,:),r(3,:),'db','LineWidth',2.7,'MarkerSize',10);
hold on;
%Représentation de la position des Dipôles
for p = 1 : P
    plot3(rho(1,p),rho(2,p),rho(3,p),'*r','LineWidth',1.7,'MarkerSize',10);
end
%Représentation de la sphère de surface du scalp
plot3(spher(1,:),spher(2,:),spher(3,:),'y.');
hold on
%Représentation de la sphère du cerveau
plot3(teta(1,:),teta(2,:),teta(3,:),'g.');
hold off
title('Sphères représentant le scalp et le cerveau + Position des capteurs et du dipôle');

figure(2);
%Représentation des positions  Capteurs
plot3(r(1,:),r(2,:),r(3,:),'db','LineWidth',2.7,'MarkerSize',10);
hold on;
%Représentation de la position des Dipôles
for p = 1 : P
    plot3(rho(1,p),rho(2,p),rho(3,p),'*r','LineWidth',1.7,'MarkerSize',10);
    plot3(rho_exp(1,p),rho_exp(2,p),rho_exp(3,p),'sg','LineWidth',1.7,'MarkerSize',10);
end
%Représentation des axes
pts = 1e2;
pas = (rayon_Scalp)/(pts-1);
plot3(zeros(1,pts),zeros(1,pts),(0:pas:rayon_Scalp),'k','LineWidth',1.5);
plot3(zeros(1,pts),(0:pas:rayon_Scalp),zeros(1,pts),'k','LineWidth',1.5);
plot3((0:pas:rayon_Scalp),zeros(1,pts),zeros(1,pts),'k','LineWidth',1.5);
%Représentation de la sphère de surface du scalp
plot3(spher(1,:),spher(2,:),spher(3,:),'y.');
hold off;
title('Positionnement des Capteurs et du Dipôle');

