0

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

任何评论都会有所帮助。

4

2 回答 2

5

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

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 的答案中的线性索引。

于 2011-11-04T22:36:09.300 回答
2

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

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

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

于 2011-11-05T02:39:25.653 回答