次の 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'
次の 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);