我有以下5x5矩阵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'
如果质心是指矩阵的"质心",则需要考虑每个"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,如预期。
质心就是每个维度单独计算的平均值。
要找到矩阵A
的每一行的质心,可以调用mean
函数:
centroid = mean(A);
上面对mean
的调用默认对行进行操作。如果您想获得A
列的质心,那么您需要按如下方式调用mean
:
centroid = mean(A, 2);