たとえば、行列の対角要素を省略するコードが必要です。
A =
[1 2 3;
1 2 3;
1 2 3];
出力は次のとおりです。
[2 3;
1 3;
1 2];
どうすれば簡単にできますか(長いものは知っていますが、簡単にする必要があります)
これが1つの解決策です:
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
n
by n
matirxの対角線を削除した後、2つの可能性があることに注意してください。
余波行列が(あなたの質問のように)byである場合、次の方法でそれを行うことができますn
。n-1
A=A';
A(1:n+1:n*n)=[];
A=reshape(A,n-1,n)';
余波行列がn-1
byの場合、次のn
ように実行できます。
A(1:n+1:n*n)=[];
A=reshape(A,n-1,n);
これが別の方法です
reshape(A(setdiff(1:9,1:4:9)),[3,2])