2011-12-02 252 views
2

我有以下的5×5矩陣答:計算矩陣的質心

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

質心就是每個維度單獨計算的平均值。

要找到每個矩陣A的行的重心,你可以調用mean功能:

centroid = mean(A); 

mean以上調用默認的行操作。如果你想獲得的A列的心,那麼你需要調用mean如下:

centroid = mean(A, 2); 
4

如果通過重心意味着對矩陣「質心」,你需要考慮的每個'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和Y = 3;

對於

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

結果爲CX = 2; Y = 2,如所預期。