1 function[phi,llh] = constructionModelesLassoRank(Pi,Rho,mini,maxi,X,Y,tau,A1,rangmin,rangmax)
8 L = size(A1, 2); %A1 est p x m+1 x L ou p x L ?!
10 %On cherche les rangs possiblement intéressants
11 deltaRank = rangmax - rangmin + 1;
13 Rank = zeros(Size,k,'int64');
15 %On veut le tableau de toutes les combinaisons de rangs possibles
16 %Dans la première colonne : on répète (rangmax-rangmin)^(k-1) chaque chiffre : ca remplit la colonne
17 %Dans la deuxieme : on répète (rangmax-rangmin)^(k-2) chaque chiffre, et on fait ca (rangmax-rangmin)^2 fois
19 %Dans la dernière, on répète chaque chiffre une fois, et on fait ca (rangmin-rangmax)^(k-1) fois.
20 Rank(:,r) = rangmin + reshape(repmat(0:(deltaRank-1), deltaRank^(k-r), deltaRank^(r-1)), Size, 1);
24 phi = zeros(p,m,k,L*Size);
25 llh = zeros(L*Size,2);
27 %On ne garde que les colonnes actives
28 %active sera l'ensemble des variables informatives
29 active = A1(:,lambdaIndex);
30 active(active==0) = [];
33 [phiLambda,LLF] = EMGrank(Pi(:,lambdaIndex),Rho(:,:,:,lambdaIndex),mini,maxi,X(:,active),Y,tau,Rank(j,:));
34 llh((lambdaIndex-1)*Size+j,:) = [LLF, sum(Rank(j,:) .* (length(active)-Rank(j,:)+m))];
35 phi(active,:,:,(lambdaIndex-1)*Size+j) = phiLambda;