Grouping elements in a matrix

8 Ansichten (letzte 30 Tage)
Anjan Dadgupta
Anjan Dadgupta am 20 Jan. 2023
Beantwortet: Dyuman Joshi am 20 Jan. 2023
I have a matrix, lets call it M. The elements of M have values between -2 to +2. For example, M is a row matrix,
and it is given by
M = [2 1.3 1.4 1.1 -1 -0.9 -0.5 0 0.5 0.9 1.1 0.9 1.6 0.8 0.2 1.1....]
I would like to sort the elemnts according to: .
i.e., in the above example, the grouping should look like this: {2 1.3 1.4 1.1 -1}, { -0.9 -0.5 0 .5 0.9},{1.1}, { 0.9 }, {1.6},{0.8 0.2}, {1.1}..
Similarly, I would like to do this kind of sorting at each row for a matrix M(i,j).
Can anyone please help me how to do it in MATLAB?
Thanks!
  4 Kommentare
Matt J
Matt J am 20 Jan. 2023
Bearbeitet: Matt J am 20 Jan. 2023
I for one do not understand the grouping criterion. Are you just grouping monotonically increasing/decreasing runs of numbers together? How should the final result be stored if there are a different number of groups in each row of M? And what do you plan to do with the groups once you've isolated them?
Fangjun Jiang
Fangjun Jiang am 20 Jan. 2023
M = [2 1.3 1.4 1.1 -1 -0.9 -0.5 0 0.5 0.9 1.1 0.9 1.6 0.8 0.2 1.1];
index=and(M>-1, M<1)
index = 1×16 logical array
0 0 0 0 0 1 1 1 1 1 0 1 0 1 1 0
For one row of data, I think the logic for grouping is to check the change of value in "index" above

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Dyuman Joshi
Dyuman Joshi am 20 Jan. 2023
M = [2 1.3 1.4 1.1 -1 -0.9 -0.5 0 0.5 0.9 1.1 0.9 1.6 0.8 0.2 1.1];
index=and(M>-1, M<1);
idx=unique([1 find(diff(index)~=0)+1 numel(M)+1]);
out=mat2cell(M,1,diff(idx))
out = 1×7 cell array
{[2 1.3000 1.4000 1.1000 -1]} {[-0.9000 -0.5000 0 0.5000 0.9000]} {[1.1000]} {[0.9000]} {[1.6000]} {[0.8000 0.2000]} {[1.1000]}

Kategorien

Mehr zu Shifting and Sorting Matrices finden Sie in Help Center und File Exchange

Produkte


Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by