Replace arrays of a matrix with a vector

5 Ansichten (letzte 30 Tage)
amin
amin am 4 Feb. 2020
Kommentiert: amin am 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.

Akzeptierte Antwort

KSSV
KSSV am 4 Feb. 2020
Bearbeitet: KSSV am 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 Kommentar
amin
amin am 4 Feb. 2020
Thank you so much, it is exacly what I was looking for.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by