Filter löschen
Filter löschen

Using clusterdata and extracting data from it's indexes.

2 Ansichten (letzte 30 Tage)
Izuru
Izuru am 15 Apr. 2015
Kommentiert: Izuru am 15 Apr. 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?

Akzeptierte Antwort

Guillaume
Guillaume am 15 Apr. 2015
Bearbeitet: Guillaume am 15 Apr. 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 Kommentare
Izuru
Izuru am 15 Apr. 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 am 15 Apr. 2015
Never mind I found it! Cheers

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by