我需要一个代码来省略矩阵的对角元素 例如,如果
A =
[1 2 3;
1 2 3;
1 2 3];
输出来了:
[2 3;
1 3;
1 2];
我怎么能这么做(我知道很长但我需要它很简单)
答案 0 :(得分:5)
这是一个解决方案:
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
答案 1 :(得分:3)
请注意,在n
matirx消除n
的对角线后,有两种可能性:
如果善后矩阵为n
n-1
(如您的问题所示),则可以通过以下方式完成:
A=A';
A(1:n+1:n*n)=[];
A=reshape(A,n-1,n)';
如果善后矩阵是n-1
n
,您可以这样做:
A(1:n+1:n*n)=[];
A=reshape(A,n-1,n);
答案 2 :(得分:0)
这是另一种方式
reshape(A(setdiff(1:9,1:4:9)),[3,2])