asif
asif

Reputation: 13

Shifting Index values in matlab

Suppose I have two rows as follows with the data

R1 = 12 13 15 17 200 23

R2 = 32 22 43 67 21 74

I would like to know how to shift the values of the 2nd index and 3rd index of R1 (e.g, 13 15) into the second row of R2 so it becomes

R2 = 32 13 15 67 21 74

Upvotes: 0

Views: 223

Answers (1)

Rotem
Rotem

Reputation: 32084

It's very simple: R2(2:3) = R1(2:3);

Code sample:

R1 = [12 13 15 17 200 23];
R2 = [32 22 43 67 21 74];
R2(2:3) = R1(2:3);

You can also use the following: R2([2,3]) = R1([2,3]);, in case indexes are not sequential.

In case R1 and R2 are two rows in a matrix, you can use the following sample:

% Create the input matrix A:
R1 = [12 13 15 17 200 23];
R2 = [32 22 43 67 21 74];
A = [R1; R2];

%Copy values from index 2 and 3 of first row to index 2 and 3 of second row:
A(2, [2,3]) = A(1, [2,3]);

In case there are more rows, and you need to "shift" all down, you can use the following example:

%Create sample matrix A (6x6 elements).
A = magic(6);

%"Shift" values of index 2,3 of all rows, one row down:
A(2:end, [2,3]) = A(1:end-1, [2,3]);

Refer here: http://www.mathworks.com/company/newsletters/articles/matrix-indexing-in-matlab.html

Upvotes: 1

Related Questions