Replace arrays of a matrix with a vector

4 views (last 30 days)
amin
amin on 4 Feb 2020
Commented: amin on 4 Feb 2020
Hi,
I have a matrice R like :
R=zeros(3);
I need to change 3 array of R:
c=[1 1;3 2;1 2];
with new values in this vector:
Newvalue=[ 3 7 9];
So the final result is :
R=[3 9 0;0 0 0;0 7 0]
I know that I can do it easily with a For loop to check every element and replace new value.
But I want to vectorize this, i.e. with no loop.

Accepted Answer

KSSV
KSSV on 4 Feb 2020
Edited: KSSV on 4 Feb 2020
Read about sub2ind.
R=zeros(3);
c=[1 1;3 2;1 2];
Newvalue=[ 3 7 9];
% get global indices
idx = sub2ind(size(R),c(:,1),c(:,2)) ;
R(idx) = Newvalue
  1 Comment
amin
amin on 4 Feb 2020
Thank you so much, it is exacly what I was looking for.

Sign in to comment.

More Answers (0)

Categories

Find more on Data Types in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!