我有以下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中编程。提前谢谢。
我不确定如何获得质心。帮助和步骤将不胜感激。提前谢谢。
答案 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);