Sort a vector in matlab
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Camilo Corredor
am 27 Aug. 2015
Kommentiert: Camilo Corredor
am 31 Aug. 2015
Somebody can help me? From the routine in Matlab I get a vector whose length can be a number between 0 and 24. The content of this vector are numbers between 0 and 24. However, I have to sort this vector with the next conditions
1. The content must be equal to index of the sorted vector. 2. If in the content of the vector, a number doesn't exist must be equal to NaN
For example
Index Content
- 1 10
- 2 11
- 3 12
- 4 15
- 5 16
- 6 17
- 7 18
- 8 19
- 9 20
- 10 22
- 11 24
In the left side is index vector and in right side the content The sorted vector that I hope to get is:
- 1 2
- 2 2
- 3 3
- 4 4
- 5 5
- 6 6
- 7 7
- 8 8
- 9 9
- 10 10
- 11 11
- 12 12
- 13 13
- 14 14
- 15 15
- 16 16
- 17 17
- 18 18
- 19 19
- 20 20
- 21 21
- 22 22
- 23 23
- 24 24
Thank for your help!
2 Kommentare
the cyclist
am 27 Aug. 2015
Bearbeitet: the cyclist
am 27 Aug. 2015
I don't understand the rule you are trying to explain, or your example. Can you use actual MATLAB commands to define your input/output, such as
x = [1 10; 2 11; etc]
y = [1 2; 2 2; 3 3; etc]
and give another example or two of input/output?
Akzeptierte Antwort
Stephen23
am 27 Aug. 2015
Bearbeitet: Stephen23
am 27 Aug. 2015
For clarity I have not included the indices, but these are simple to include if required.
>> inp = [10;11;12;15;16;17;18;19;20;22;24];
>> out = nan(24,1);
>> out(inp) = inp
out =
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
10
11
12
NaN
NaN
15
16
17
18
19
20
NaN
22
NaN
24
Note that I assumed that the minimum value is one, as this is what the example values show (and which contradict the OP's original question which states a minimum value of zero).
6 Kommentare
Stephen23
am 28 Aug. 2015
Bearbeitet: Stephen23
am 28 Aug. 2015
If you have another vector of values vec with the same number of elements as inp, then you can use much the same indexing as in the answers I gave you:
>> inp = [0;10;11;12;15;16;17;18;19;20;22;24];
>> vec = [0,01,11,21,51,61,71,81,90,02,22,42];
>> out = nan(25,2);
>> out(inp+1,1) = inp;
>> out(inp+1,2) = vec
out =
0 0
NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN
10 1
11 11
12 21
NaN NaN
NaN NaN
15 51
16 61
17 71
18 81
19 90
20 2
NaN NaN
22 22
NaN NaN
24 42
You can learn how these basic commands work by doing MATLAB's introductory tutorials:
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!