计算矩阵的质心

时间:2011-12-02 21:39:24

标签: matlab algebra linear

我有以下5 x 5矩阵A:

1 0 0 0 0 
1 1 1 0 0 
1 0 1 0 1 
0 0 1 1 1 
0 0 0 0 1

我试图在matlab中找到质心,所以我可以找到散射矩阵:

Scatter = A*Centroid*A'

我的线性代数非常生疏,所以我希望手工操作,以帮助我弄清楚如何在matlab中编程。提前谢谢。

我不确定如何获得质心。帮助和步骤将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分:5)

如果您通过质心表示矩阵的“质心”,则需要考虑矩阵中每个“1”的位置。我通过使用meshgrid函数完成了以下操作:

M =[    1 0 0 0 0; 
        1 1 1 0 0; 
        1 0 1 0 1; 
        0 0 1 1 1; 
        0 0 0 0 1];

[rows cols] = size(M);

y = 1:rows;
x = 1:cols;

[X Y] = meshgrid(x,y);

cY = mean(Y(M==1))
cX = mean(X(M==1))

产生cX = 3且cY = 3;

对于

M = [1 0 0;
     0 0 0;
     0 0 1];

结果是cX = 2; cY = 2,正如所料。

答案 1 :(得分:2)

质心只是每个维度单独计算的平均值。

要查找矩阵A的每一行的质心,可以调用mean函数:

centroid = mean(A);

以上对mean的调用默认情况下对行进行操作。如果您想获得A列的质心,则需要按以下方式调用mean

centroid = mean(A, 2);