Azzera filtri
Azzera filtri

Separate values from one column

1 visualizzazione (ultimi 30 giorni)
Rita Barnabé
Rita Barnabé il 1 Nov 2021
Modificato: Chunru il 2 Nov 2021
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

Scopri di più su Oceanography and Hydrology in Help Center e File Exchange

Prodotti


Release

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by