Clear Filters
Clear Filters

re-indexing slices of a matrix

19 views (last 30 days)
LH
LH on 10 Jul 2024 at 17:29
Commented: Voss on 10 Jul 2024 at 19:05
Hi all,
I have a matrix A where its second column represents the index of each row. I want to replace these values so that they start from 1. I tried to do this using the code below, but clearly I'm not succeeding.
mainidx = 4; %main indices
desiredidx = 5; %waht i want the indices to be
%the matrix
A = [1 4
4 4
3 4
6 3
3 3
2 1
3 1
7 2
5 2
9 2
5 1
4 1];
%reindexing
for i = 1:mainidx
for j=1:desiredidx
idx = A(:,2)==mainidx;
A(A(:,2)==desiredidx) = mainidx;
A(idx) = desiredidx;
end
end
I want this matrix to look like the following:
A = [1 1
4 1
3 1
6 2
3 2
2 3
3 3
7 4
5 4
9 4
5 5
4 5];
Any help would be appreicted.

Accepted Answer

Voss
Voss on 10 Jul 2024 at 17:56
A = [1 4
4 4
3 4
6 3
3 3
2 1
3 1
7 2
5 2
9 2
5 1
4 1];
A(:,2) = 1+cumsum([false; logical(diff(A(:,2)))]);
disp(A)
1 1 4 1 3 1 6 2 3 2 2 3 3 3 7 4 5 4 9 4 5 5 4 5
  2 Comments
LH
LH on 10 Jul 2024 at 19:00
Many thanks! This works the way I want.
Voss
Voss on 10 Jul 2024 at 19:05
You're welcome!

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!