Sysquake Remote Live
Covariance
A set of points can be characterized by its first- and second-order moments.
First-order moments are the average values along each dimension; second-order moments
are (co)variance. They can be represented graphically as an ellipse.
In the graphic below, you can add points and observe their influence on
the covariance ellipse.
Source code
Here is the code inserted in the file stored on the server. If you look at
the source of this page in your browser, you will see only the HTML code
produced by Sysquake Remote.
<?sqr
% get points from data submitted to this page as form variable "x"
try
x = str2obj(httpvars.x);
if size(x, 1) < 3 || size(x, 2) ~= 2
% detect errors (which wouldn't compromise security anyway)
error invalid
end
catch
x = -5 + 10 * rand(3, 2);
end
% get click
% (managed automatically in figures 'interactive' or 'forminput')
click = getclick;
if isfield(click, 'x')
x(end+1, :) = [click.x, click.y];
end
% reduce precision to shorten url
x = 1e-3 * round(1e3 * x);
% computation
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>');
?>
|