How to operate on specific diagonal elements of a matrix?

2 visualizzazioni (ultimi 30 giorni)
Hello everyone.
I am having a matrix k with size (20 x 20), for which, I need to replace some of the diagonal elements with ones. I constructed a vector v including the indices of the elements to be replaced, and applied the following code, but I is not working as I wanted.
k = rand(20);
u = [1; 3; 6; 11; 16; 20];
k(u(:,1),u(:,1)) = 1;
He is replacing the diagonal members and other members as if he is including all combinations of the rows and columns. How can I edit this to get only the diagonal members corrected?

Risposta accettata

Stephen23
Stephen23 il 27 Nov 2017
Modificato: Stephen23 il 27 Nov 2017
You need to use sub2ind:
>> idx = sub2ind(size(k),u,u);
>> k(idx) = 1

Più risposte (0)

Categorie

Scopri di più su Operating on Diagonal Matrices in Help Center e File Exchange

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by