Если вы просто хотите добавить единичную матрицу или ее кратную матрицу квадрат , вы можете сделать
A_new = A_old + k*eye(size(A_old));
, где A_old
- ваша матрица, а k
это некоторый множитель.Если вы хотите добавить разные значения к каждому диагональному элементу, вы можете сделать что-то вроде
A_new = A_old + diag(values);
, где values
- это вектор с таким же количеством элементов, что и количество столбцов (или строк)ваша матрица A_old
.
Если ваша матрица велика, будет более эффективно использовать spdiags
как:
dim_A = size(A_old,1);
A_new = A_old + spdiags(values(:),0,dim_A,dim_A);
или использовать линейное индексирование, как в ответе Амро.