函式簡介
語法格式:
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表示主對線)。如圖1
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 =
0
0
0
0
>> v= diag(X,1)
v =
1
1
1
矩陣的示例:
A=[1,2,3
4,5,6
7,8,9]
A =
1 2 3
4 5 6
7 8 9
>> diag(A)
ans =
1
5
9
>> diag(diag(A))
ans =
1 0 0
0 5 0
0 0 9
數學符號
線上性代數中,diag(a,b,c…)表示一個對角矩陣(即指除了主對角線外的元素均為零的方陣)。