I have a matrix column with a number in each row, but they are not consecutive (per example, from 3 it jumps to 6). How can I turn them into a consecutive order?
조회 수: 1 (최근 30일)
이전 댓글 표시
I have a matrix column with a number in each row, but they are not consecutive (per example, from 3 it jumps to 6). How can I turn them into a consecutive order?
댓글 수: 9
Walter Roberson
2017년 1월 9일
I really do not understand the rule to be followed! Why are only the 10 and 12 changed? Why should they become 6 and 9?? How does this generalize?
채택된 답변
Walter Roberson
2017년 1월 9일
A = [0,1,2,3,6,3,10,6,6,10,12,12,0,2];
[~, ~, idx] = unique(A);
t = 0:max(idx)-1;
B = t(idx);
Note: this code relies upon the expected lowest value being 0.
추가 답변 (1개)
Niels
2017년 1월 9일
편집: Niels
2017년 1월 9일
depending on what you really mean by "sorting" and "consecutive", here are 2 different solutions:
A=randi(10,12,4)
A =
8 2 2 2
9 9 2 8
9 6 3 4
1 6 5 3
4 2 1 5
3 9 10 1
9 7 10 2
5 4 5 10
10 6 5 10
2 5 4 6
3 1 10 1
2 3 4 3
% use sort if you just want to sort them
>> A(:,3)=sort(A(:,3))
A =
8 2 1 2
9 9 2 8
9 6 2 4
1 6 3 3
4 2 4 5
3 9 4 1
9 7 5 2
5 4 5 10
10 6 5 10
2 5 10 6
3 1 10 1
2 3 10 3
% but if u want to make them consecutive => (1:#rows)
>> A(:,3)=1:12
A =
8 2 1 2
9 9 2 8
9 6 3 4
1 6 4 3
4 2 5 5
3 9 6 1
9 7 7 2
5 4 8 10
10 6 9 10
2 5 10 6
3 1 11 1
2 3 12 3
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Multidimensional Arrays에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!