en fr

nyctergatis.com

Sysquake Remote Live

Covariance

Un ensemble de points peut être décrit par ses moments de premier et de deuxième ordre. Les moments de premier ordre donnent la moyenne selon l'axe des x et des y; les moments de deuxième ordre donnent leur (co)variance. Ils peuvent être représentés sous forme graphique par une ellipse.

Dans la figure ci-dessous, vous pouvez ajouter des points et observer leur influence sur l'ellipse de covariance.

Code source

Voici le code source qui figure dans le fichier sur le serveur. Si vous jetez un coup d'oeil au code source dans votre butineur, vous ne verrez que le code HTML généré par Sysquake Remote.

<?sqr
% reprend les points transmis dans l'URL sous forme de variable "x"
try
  x = str2obj(httpvars.x);
  if size(x, 1) < 3 || size(x, 2) ~= 2
    % détection des erreurs
    % (cela n'aurait de toute façon pas de conséquence sur la sécurité)
    error invalide
  end
catch
  x = -5 + 10 * rand(3, 2);
end

% lit la position du clic de souris
% (géré automatiquement dans les figures 'interactive' ou 'forminput')
click = getclick;
if isfield(click, 'x')
  x(end+1, :) = [click.x, click.y];
end

% réduit la précision pour raccourcir l'URL
x = 1e-3 * round(1e3 * x);

% calcul
M1 = mean(x, 1).';
M2 = cov(x);
phi = 2 * pi * (0:0.01:1);
crcle = [cos(phi); sin(phi)];
ell = sqrtm(M2) * crcle + repmat(M1, 1, size(crcle, 2));
fprintf('<form method="get">');
fprintf('<input type="hidden" name="x" value="%s">', ...
        htmlspecialchars(dumpvar(x)));
beginfigure('kind', 'forminput');
scale('equal', [-10, 10, -10, 10]);
plot(ell(1,:), ell(2,:), 'b');
plot(x(:,1), x(:,2), 'xK');
endfigure;
fprintf('</form>');
?>