matlab - 如何在 MATLAB 中删除矩阵的对角线元素?

标签 matlab matrix diagonal

我需要一个代码来省略矩阵的对角线元素 例如如果

A =

[1 2 3;
 1 2 3;
 1 2 3];

输出来了:

[2 3;
 1 3;
 1 2];

我怎样才能简单地做到这一点(我知道一个很长的但我需要它简单)

最佳答案

这是一种解决方案:

Alower = tril(A, -1);
Aupper = triu(A,  1);
result = Alower(:, 1:end-1) + Aupper(:, 2:end)

演示:

> A = [1 2 3; 1 2 3; 1 2 3]
A =

   1   2   3
   1   2   3
   1   2   3

> tril(A, -1)(1:end, 1:end-1) + triu(A, 1)(1:end, 2:end)
ans =

   2   3
   1   3
   1   2

关于matlab - 如何在 MATLAB 中删除矩阵的对角线元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11709880/

相关文章:

matlab - randperm() 可以生成多个随机排列吗?

java |井字游戏右对角线不起作用

c++ - 修改特征矩阵对角线

performance - Matlab bsxfun - 为什么 bsxfun 在这种情况下无法工作?

c++ - 在OpenCV中匹配Matlab的regionprop(x ,'Area')

c++ - 我可以在不复制任何数据的情况下通过 vector 附加特征矩阵吗?

algorithm - 了解方阵的奇异值分解算法

matlab - 获取在 matlab 稀疏矩阵中按降序排序的前 N ​​个值的索引

python - 如何从 numpy 中的现有数组创建对角线数组

arrays - 如何复制矩阵中超过阈值的值并将矩阵的其余部分设置为 0?