re-indexing slices of a matrix

2 visualizaciones (últimos 30 días)
LH
LH el 10 de Jul. de 2024
Comentada: Voss el 10 de Jul. de 2024
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.

Respuesta aceptada

Voss
Voss el 10 de Jul. de 2024
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 comentarios
LH
LH el 10 de Jul. de 2024
Many thanks! This works the way I want.
Voss
Voss el 10 de Jul. de 2024
You're welcome!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by