Matlab - 笛卡尔点的标准偏差

时间:2012-10-04 21:32:48

标签: arrays matlab statistics standard-deviation

我有一组笛卡尔点(第1列是x值,第2列是y值),如下所示:

308 522
307 523
307 523
307 523
307 523
307 523
306 523

我如何获得积分的标准偏差?它将与平均值进行比较,这将是一条直线。这些点不是那条直线,因此标准偏差描述了线段直线的波浪形或“偏离基线”。

我真的很感激帮助。

2 个答案:

答案 0 :(得分:3)

如果您确定xy数据描述了一条直线,您可以执行以下操作。

找到最佳拟合直线等于以最小二乘意义求解超定线性系统Ax = b,其中

xy = [
308 522
307 523
307 523
307 523
307 523
307 523
306 523];

x_vals = xy(:,1);
y_vals = xy(:,2);

A = [x_vals ones(size(x_vals))];
b = y_vals;

这可以在Matlab中完成,如下所示:

sol = A\b;

m = sol(1);
c = sol(2);

我们现在所做的是找到mc的值,以便等式y = mx+c描述的线最适合您给出的数据。这条最合适的生产线并不完美,因此它有错误。 y数据:

errs = (m*x_vals + c) - y_vals;

这些错误的标准偏差可以这样计算:

>> std(errs)
ans = 
    0.2440

如果要使用与线的垂直距离(欧几里德距离),则必须包含几何因子:

errs = (m*x_vals + c) - y;
errs_perpendicular = errs * cos(atan(m));

使用trig标识可以将其重新编写为

errs_perpendicular = errs * 1/sqrt(1+m*m);

当然,

>> std(errs_perpendicular)
ans = 
    0.2182

如果您不确定直线是否适合数据和/或您的xy数据基本上描述了某个公共中心周围的点云,您可以执行以下操作。

找到质心(COM):

COM = mean(xy);

所有点到COM的距离:

dists = sqrt(sum(bsxfun(@minus, COM, xy).^2,2));

及其标准差:

>> std(dists)
ans =  
    0.5059

答案 1 :(得分:1)

一组二维值的平均值是另一个二维值,即它是一个点,而不是一条线。我相信这一点也被称为质心。

在这种情况下,标准偏差是什么并不完全清楚,但我认为根据与平均值的距离来定义它是有意义的。