re-indexing slices of a matrix

2 次查看(过去 30 天)
LH
LH 2024-7-10
评论: Voss 2024-7-10
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.

采纳的回答

Voss
Voss 2024-7-10
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

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by