仅向矩阵的对角线元素添加一个小值

发布于 2024-12-13 16:10:35 字数 146 浏览 1 评论 0原文

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

任何评论都会有帮助。

I am a newbie to matlab and I am trying to find out the inverse of matrix with very small values. When i try to find the inverse I get an error saying that the matrix is singular. One of the solutions suggested is to try and add some elements to the diagonal elements. I know i have to use eye and diag methods but I am not able come up the correct soltion.

Any comments will be helpful.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

将军与妓 2024-12-20 16:10:35

如果您只想将单位矩阵或其倍数添加到您的方阵中,您可以执行

A_new = A_old + k*eye(size(A_old));

以下操作,其中 A_old 是您的矩阵,k是一些乘数。如果您想向每个对角线元素添加不同的值,您可以执行类似的操作,

A_new = A_old + diag(values);

其中 values 是一个向量,其元素数量与矩阵的列数(或行数)一样多A_old

会提高内存效率。

dim_A = size(A_old,1);
A_new = A_old + spdiags(values(:),0,dim_A,dim_A);

如果您的矩阵很大,则使用 spdiags as或使用线性索引(如 Amro 的答案)

If you just want to add the identity matrix or a multiple of it to your square matrix, you can do

A_new = A_old + k*eye(size(A_old));

where A_old is your matrix and k is some multiplier. If you want to add a different values to each diagonal element, you can do something like

A_new = A_old + diag(values);

where values is a vector with as many number of elements as the number of columns (or rows) of your matrix A_old.

If your matrix is large, it will be more memory efficient to use spdiags as:

dim_A = size(A_old,1);
A_new = A_old + spdiags(values(:),0,dim_A,dim_A);

or use linear indexing like in Amro's answer.

凯凯我们等你回来 2024-12-20 16:10:35

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

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

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

For a square matrix, you can add to the diagonal as:

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

where values can be scalar or a vector of r elements

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文