diag
目录
编辑本段函数简介
函数功能:在FreeMat、Matlab中该函数用于构造一个对角矩阵(不在对角线上元素全为0的方阵)或者以向量(在matlab中,1*n、n*1的矩阵都可以看做是一个向量)的形式返回一个矩阵上对角线元素。
语法格式:
FreeMat中该函数语法:
y = diag(x,n)
如果x是一个矩阵,y就是x中第n条对角线上的元素。
如果n被忽略,n的默认值是0,即返回主对角线上元素。
Matlab中该函数语法:
X = diag(v,k)
其中v是一个含有n个元素的向量,该调用格式可以构造一个n+abs(k)阶的方阵X。
并把v作为方阵X的第k条对角线(k大于0,表示主对角线上方的第k条对角线,k小于0表示主对角线下侧的第k条对角线,k等于0表示主对线)。
X = diag(v)
等价于X = diag(v,0)
v = diag(X,k)
以向量形式返回矩阵X中第k条对角线上的元素。
v = diag(X)
等价于v = diag(X, 0)
相关函数:diag、rank、det、eig、blkdiag、spdiags
编辑本段程序示例
FreeMat中示例:
--> A = [1 2 3; 4 5 6; 7 8 9];
--> diag(A)
ans =
1
5
9
--> sum(diag(A))
ans = 15
--> trace(A)
ans = 15
Matlab中示例:
% 构造对角矩阵
>> v = [1 1 1];
>> X = diag(v)
X =
1 0 0
0 1 0
0 0 1
>> X = diag(v, 1)
X =
0 1 0 0
0 0 1 0
0 0 0 1
0 0 0 0
% 以向量形式返回对角矩阵上指定对角线上元素>> v= diag(X)
v =
>> v= diag(X,1)
v =
1
1
1。