Расчет центроида матрицы - PullRequest
3 голосов
/ 03 декабря 2011

У меня есть следующая матрица A 5 x 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'

MyЛинейная алгебра довольно ржавая, поэтому я надеялся, что это можно сделать вручную, чтобы понять, как программировать ее в Matlab.Заранее спасибо.

Я не уверен, как именно получить центроид.Помощь и шаги будут оценены.Заранее спасибо.

Ответы [ 2 ]

5 голосов
/ 03 декабря 2011

Если вы под центроидом подразумеваете «центр масс» для матрицы, вам необходимо учесть расположение каждого «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, как и ожидалось.

2 голосов
/ 03 декабря 2011

Центроид - это просто среднее значение, вычисляемое отдельно для каждого измерения.

Чтобы найти центроид каждой из строк вашей матрицы A, вы можете вызвать mean function:

centroid = mean(A);

Вышеупомянутый вызов mean работает со строками по умолчанию.Если вы хотите получить центроид столбцов A, то вам нужно позвонить mean следующим образом:

centroid = mean(A, 2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...