How to operate on specific diagonal elements of a matrix?

1 visualización (últimos 30 días)
Ahmad Gad
Ahmad Gad el 27 de Nov. de 2017
Comentada: Ahmad Gad el 27 de Nov. de 2017
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?

Respuesta aceptada

Stephen23
Stephen23 el 27 de Nov. de 2017
Editada: Stephen23 el 27 de Nov. de 2017
You need to use sub2ind:
>> idx = sub2ind(size(k),u,u);
>> k(idx) = 1

Más respuestas (0)

Categorías

Más información sobre Operating on Diagonal Matrices en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by