function [plotM ,k0]= m_and_s(k1,k2,k3, l, c, N) % On appelle les fonctions handles ed = @edginess; cons = @byaverage; n = @norme; moy = @moyenne; % Voila la premiere boucle pour trouver % les edges et la matrice qui va avec B = []; % on veut afficher l'energie de Munford and sha % Calcul de M pour une valeur donne du seuil k X = []; Zfi = []; Sfi = []; kstep = k3/800; u = 1; for t = 0.0001:kstep:k3/40 u S = 0; Z = 0; for i = 1:l-1 for j = 1:c-1 e(i,j) = feval( ed, N, i, j); d(i,j) = feval( cons, N ,i, j); R(i,j) = e(i,j)*d(i,j); if R(i,j) > t S = S + 1; B(i,j) = 1; else B(i,j) = feval(moy, N, i, j); Z = d(i,j) + Z; end end end x(u) = t; Sfi(u) = S; Zfi(u) = Z; u = u + 1; end % Et Hop on plote un petit coup MSfi = max(Sfi); Sfi_scale = Sfi/(MSfi); MZfi = max(Zfi); Zfi_scale = Zfi/(MZfi); figure, plotM = plot(x,Sfi_scale,'--r',x,Zfi_scale,'--b'); figure, plotMlog = semilogx(x,Sfi_scale,'--r',x,Zfi_scale,'--b'); %figure, plotM2 = plot(x,Zfi_scale,'--b'); %figure, plotM3 = plot(x,Ems_scale,'k'); % On essaye d'obtenir le bon lambda%On cherche le meilleur k0 e = 0; for y = 0:0.01:2 e = e + 1 Ems_scale = Sfi_scale + y * Zfi_scale; E0 = min(Ems_scale); r = 1; while Ems_scale(r) > E0 r = r + 1; end k0(e) = x(r); end k0