【问题标题】:adding a small value to only the diagonal elements of a matrix仅向矩阵的对角元素添加一个小值
【发布时间】:2011-11-04 22:30:12
【问题描述】:

我是 matlab 的新手,我正在尝试找出具有非常小的值的矩阵的逆矩阵。当我试图找到逆时,我得到一个错误,说矩阵是奇异的。建议的解决方案之一是尝试向对角线元素添加一些元素。我知道我必须使用眼睛和诊断方法,但我无法提出正确的解决方案。

任何 cmets 都会有所帮助。

【问题讨论】:

标签: matlab matrix matrix-inverse diagonal


【解决方案1】:

如果你只是想将单位矩阵或它的倍数添加到你的 square 矩阵中,你可以这样做

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);

或者像 Amro 的回答那样使用线性索引。

【讨论】:

    【解决方案2】:

    对于方阵,您可以将对角线添加为:

    [r,~] = size(M);
    M(1:r+1:end) = M(1:r+1:end) + values;
    

    其中values 可以是标量或r 元素的向量

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多