1 function[A1,A2,Rho,Pi] = selectiontotale(phiInit,rhoInit,piInit,gamInit,mini,maxi,gamma,glambda,X,Y,seuil,tau)
3 [p,m,k] = size(phiInit);
5 A1 = zeros(p,m+1,L,'int64');
6 A2 = zeros(p,m+1,L,'int64');
10 %Pour chaque lambda de la grille, on calcule les coefficients
12 [phi,rho,pi,~,~] = EMGLLF(phiInit,rhoInit,piInit,gamInit,mini,maxi,gamma,glambda(lambdaIndex),X,Y,tau);
14 %Si un des coefficients est supérieur au seuil, on garde cette variable
15 selectedVariables = zeros(p,m);
16 discardedVariables = zeros(p,m);
17 atLeastOneSelectedVariable = false;
22 if max(abs(phi(j,mm,:))) > seuil
23 selectedVariables(j,cpt) = mm;
25 atLeastOneSelectedVariable = true;
27 discardedVariables(j,cpt2) = mm;
33 %Si aucun des coefficients n'a été gardé on renvoit la matrice nulle
34 %Et si on enlevait ces colonnes de zéro ??? Indices des colonnes vides
35 if atLeastOneSelectedVariable
38 if selectedVariables(j,1) ~= 0
43 %Sinon on renvoit les numéros des coefficients utiles
44 A1(:,1,lambdaIndex) = [vec;zeros(p-length(vec),1)];
45 A1(1:length(vec),2:m+1,lambdaIndex) = selectedVariables(vec,:);
46 A2(:,1,lambdaIndex) = 1:p;
47 A2(:,2:m+1,lambdaIndex) = discardedVariables;
48 Rho(:,:,:,lambdaIndex) = rho;
49 Pi(:,lambdaIndex) = pi;