Separate values from one column

Hi
In this matrix I have 5 groups of values that I want to join.
Here is part of column:
26380
26381
26382
327207
327208
327209
327210
I want that the 3 first numbers to stay in one matrix and the rest in others.
With more cases of this
for n = 1:(length(newData)-1)
if ( newData(n+1,1)) == ( newData(n,1) + 1 )
line0(n+1) = n;
else if ( newData(n+1,1)) ~= ( newData(n,1) + 1 )
line1(n+1) = n+1;
end
end
I tried like this.

 Risposta accettata

Chunru
Chunru il 2 Nov 2021
Modificato: Chunru il 2 Nov 2021
x = [26380
26381
26382
327207
327208
327209
327210
400
450
500];
threshold = 1000;
xd = diff(x);
idx = find(abs(xd) > threshold);
idx = [0; idx(:); length(x)];
for i=1:length(idx)-1
y{i} = x(idx(i)+1:idx(i+1));
end
y{1}, y{2}, y{3}
ans = 3×1
26380 26381 26382
ans = 4×1
327207 327208 327209 327210
ans = 3×1
400 450 500

Più risposte (1)

Image Analyst
Image Analyst il 2 Nov 2021
Modificato: Image Analyst il 2 Nov 2021
To group a vector of data into 5 different groups based on their values you can use kmeans() (in the Statistics and Machine Learning Toolbox):
v = [...
26380
26381
26382
327207
327208
327209
327210
222111
222133
222144
222124
111111
111141
111151
121245]
v = 15×1
26380 26381 26382 327207 327208 327209 327210 222111 222133 222144
bar(v);
grid on;
indexes = kmeans(v, 5) % Cluster into 5 groups.
indexes = 15×1
4 4 4 1 1 1 1 3 3 3
indexes is a vector that says what group each of your data values most likely belongs to.

Categorie

Prodotti

Release

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by