Using clusterdata and extracting data from it's indexes.

2 visualizaciones (últimos 30 días)
Izuru
Izuru el 15 de Abr. de 2015
Comentada: Izuru el 15 de Abr. de 2015
Hello,
I have an array of points say A = [1,13,14,2,15,16,3,17];
I use clusterdata (with criterion as distance) which returns me the cluster number each data point in A belongs to:
T = [1,2,2,1,2,2,1,2];
I want to have a new array which separates these data points into:
B = [1,2,3] C = [13,14,15,16,17]
How do I achieve this?

Respuesta aceptada

Guillaume
Guillaume el 15 de Abr. de 2015
Editada: Guillaume el 15 de Abr. de 2015
A very simple but possibly obscure way is to use accumarray:
Asplit = accumarray(T', A, [], @(v) {v});
Note that the output is a cell array where each cell is a cluster. It's much better to use a cell array than individually named variables.
The above line is equivalent to:
Asplit = cell(max(T), 1);
for cluster = 1:max(T)
Asplit{cluster} = A(T == cluster);
end
  2 comentarios
Izuru
Izuru el 15 de Abr. de 2015
That worked great thanks. One more simple question, the output I get says:
Asplit = [20x1 single] [16x1 single] etc
How do i display the values of that array? Sorry it's been a while since using matlab...
Izuru
Izuru el 15 de Abr. de 2015
Never mind I found it! Cheers

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by