1

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

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

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

我真的很感激帮助。

4

2 回答 2

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
于 2012-10-05T05:37:42.163 回答
1

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

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

于 2012-10-04T21:41:01.987 回答