Borrar filtros
Borrar filtros

How to perform circshift on specific elements?

8 visualizaciones (últimos 30 días)
hbcukid
hbcukid el 20 de Nov. de 2020
Comentada: hbcukid el 20 de Nov. de 2020
I have a much larger dataset but given A = [1 2 3 4; 5 6 7 8; 9 10 11 12], how can I use circshift on the odd rows and only columns 2 - 3 to move the values one column to the left. I know those values are indexed by A = A(1:2:end, 2:3); and the circshift should be circshift(A, [0 -1]) but I am having trouble putting it all together.

Respuesta aceptada

Rik
Rik el 20 de Nov. de 2020
You are overwriting the original array, instead of using circshift on the partial array.
A = [1 2 3 4; 5 6 7 8; 9 10 11 12];
L = false(size(A));
L(1:2:end, 2:3) = true;
A_temp = A(L);
A_temp = circshift(A_temp, [0 -1]);
A(L) = A_temp;
%Or with more compact notation:
A = [1 2 3 4; 5 6 7 8; 9 10 11 12];
A(1:2:end, 2:3) = circshift(A(1:2:end, 2:3), [0 -1]);
disp(A)
1 3 2 4 5 6 7 8 9 11 10 12

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing 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