Clear Filters
Clear Filters

How to access specific elements of an array?

3 views (last 30 days)
Suppose I have two matrices A and x as follows:
x =
1 2
2 3
A =
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
Each row of x contains the row and column indices of an element of A that I would like to access and change. In the above example, I want to change the (1,2) and (2,3) elements of A. Suppose I want to set the value of these elements to 5. The command 'A([1 2],[2 3]) = 5;' produces A =
1 5 5 1
1 5 5 1
1 1 1 1
1 1 1 1
However, what I want is the following:
A =
1 5 1 1
1 1 5 1
1 1 1 1
1 1 1 1
In my actual code, A and x may have thousands of elements each. Therefore, I am wondering whether it is possible to do this without using a for loop?

Accepted Answer

Star Strider
Star Strider on 14 Jul 2017
Edited: Star Strider on 14 Jul 2017
One approach:
ix = sub2ind(size(A), x(:,1), x(:,2)); % Change Subscripts To Linear Index Vector
A(ix) = 5;
A =
1 5 1 1
1 1 5 1
1 1 1 1
1 1 1 1
  2 Comments
Karthik Nagarajan
Karthik Nagarajan on 14 Jul 2017
Thank you for the quick reply. Exactly what I was looking for!

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!