3

次の 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'
4

2 に答える 2

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です。

于 2011-12-03T18:40:29.113 に答える
2

重心は、各次元について個別に計算された単純な平均です。

行列の各行の重心を見つけるには、次の関数Aを呼び出します。mean

centroid = mean(A);

上記の への呼び出しはmean、デフォルトで行を操作します。の列の重心を取得する場合は、次のようAに呼び出す必要があります。mean

centroid = mean(A, 2);
于 2011-12-02T21:47:22.527 に答える