答案 0 :(得分:3)
diag
内置了以下功能:
diag(ones(4,1),1)
ans =
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
0 0 0 0 0
diag(ones(4,1),-1)
ans =
0 0 0 0 0
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
diag(V,k)
的语法为:V
是要放在对角线上的向量(是1或任何奇数向量),而k
是对角线的标签。对角线。 0
是主要对角线,正整数逐渐远离上对角线,负整数与下对角线相同;也就是说,在此示例中,k=1
给出了第一个上对角线,k=-4
给出了左下角。
出于完整性考虑,如果您只希望索引而不是完整矩阵(因为建议您将向量插入当前矩阵),则可以使用以下函数:
function [idx] = diagidx(n,k)
% n size of square matrix
% k number of diagonal
if k==0 % identity
idx = [(1:n).' (1:n).']; % [row col]
elseif k>0 % Upper diagonal
idx = [(1:n-k).' (1+k:n).'];
elseif k<0 % lower diagonal
idx = [(1+abs(k):n).' (1:n-abs(k)).'];
end
end
idx
的每一行都包含矩阵的索引。
答案 1 :(得分:0)
triu(B+1,1)-triu(B+1,2)
在第一个对角线上方创建一个,并且
tril(B+1,-2)-tril(B+1,-3)
对于第一个下对角线不一样。