Предположим, у меня есть следующие наборы данных:Как представить кластеры в MATLAB?
:
1 8 9 12
2 1 0 35
7 0 0 23
B:
6 3
1 9
0 7
То, что я хочу сделать, это для каждой строки в B, найти наименьшее значение и получить индекс столбца, из которого он появляется. Например, для строки 1 от B, наименьшая значение , который исходит из столбца . Поэтому добавьте строку 1 от A до Cluster 2
.
В строке 2 из B
, наименьшее значение равно 1 , которая поступает из колонны 1
. Поэтому добавьте строку 2 от A до Cluster 1
. И так далее ...
Теперь я хочу создать массив под названием C (это будет представлять мои кластеры) с 2 элементами. Пункт 1 содержит матрицу всех строк из A, которая должна быть в Cluster 1
, а в пункте 2 представлена матрица всех строк из A, которая должна быть в Cluster 2
. Здесь у меня проблемы. Это моя нынешняя попытка:
function clusterSet = buildClusters(A, B)
clusterSet = zeros(size(B, 2)); % Number of clusters = number of columns in B
for i = 1:size(A, 1)
[value, index] = min(B(i,:)); % Get the minimum value of B in row i, and its index (column number)
clusterSet(index) = A(i,:); % Add row i from A to its corresponding cluster's matrix.
end
end
Я получаю следующее сообщение об ошибке на последнюю строку (примечание: это явно не ссылаясь на «A» моих наборов данных и «B», но говорит о общем А и в):
In an assignment A(I) = B, the number of elements in B and I must
be the same.
Если минимальное значение B в строке 1 приходит из колонки 2, то строка 1 из а должны быть добавлены к матрице Cluster 2
(строка B соответствует какой строке а на добавьте в кластер, а столбец B представляет, какой кластер должен добавить его). Это то, что я хочу, чтобы эта строка делала, но я получаю вышеуказанную ошибку.
Любые предложения?
Сделать 'C' массив ячеек. Тогда он может иметь элементы неравных размеров. – beaker