MATLAB 對角矩陣
在本教程中,我們將討論如何使用 MATLAB 中的 diag()
和 spdiags()
函式製作對角矩陣。
在 MATLAB 中使用 diag()
函式製作對角矩陣
要製作對角矩陣或獲取矩陣的對角線元素,可以在 MATLAB 中使用 diag()
函式。例如,讓我們根據給定的向量製作對角矩陣。請參見下面的程式碼。
vector = [1 2 3 4 5];
diagonal = diag(vector)
輸出:
diagonal =
1 0 0 0 0
0 2 0 0 0
0 0 3 0 0
0 0 0 4 0
0 0 0 0 5
在上面的程式碼中,我們製作了一個 5x5
對角矩陣,其中對角線元素儲存在變數 vector
中。diag()
函式根據給定向量記憶體在的元素數量建立一個方陣。如果元素的數量為 5,則對角矩陣將為 5x5
。你也可以通過在 diag()
函式內使用第二個引數來更改對角線的位置。如果第二個引數等於 0,則向量將放置在主對角線上。如果第二個引數大於 0,則向量將放置在主對角線上方。如果第二個引數小於 0,則向量將放置在主對角線下方。例如,讓我們將向量放置在主對角線上方。請參見下面的程式碼。
vector = [1 2 3 4 5];
diagonal = diag(vector,1)
輸出:
diagonal =
0 1 0 0 0 0
0 0 2 0 0 0
0 0 0 3 0 0
0 0 0 0 4 0
0 0 0 0 0 5
0 0 0 0 0 0
在上面的程式碼中,我們建立了一個對角矩陣,其元素放置在主對角線上。如你所見,對角線的大小現在為 6x6
,因為向量位於主對角線上方,並且為了確保所有元素都位於矩陣內,矩陣的大小增加了。你也可以使用 diag()
函式從矩陣獲取對角線元素。例如,讓我們從給定的矩陣中獲取主要的對角線元素。請參見下面的程式碼。
vector = [1 2 3;4 5 6;7 8 9]
diagonal = diag(vector)
輸出:
vector =
1 2 3
4 5 6
7 8 9
diagonal =
1
5
9
在上面的程式碼中,我們使用了 diag()
函式從給定矩陣中查詢對角線元素,你可以看到該函式返回了給定矩陣的對角線元素。你也可以使用 diag()
函式中的第二個引數獲取主對角線上方和下方的對角線元素,就像上面我們用來製作對角線矩陣且元素在主對角線上方的情況一樣。檢視此網頁以獲取有關 diag()
函式的更多資訊。
在 MATLAB 中使用 spdiags()
函式製作對角矩陣
要製作一個具有多個對角線的對角矩陣或獲取矩陣的所有對角線元素,可以在 MATLAB 中使用 spdiags()
函式。在 spdiags()
函式內部傳遞的第一個引數是值,第二個引數是對角線位置,第三個和第四個引數是對角矩陣的大小。例如,讓我們根據給定的向量製作一個三對角矩陣。請參見下面的程式碼。
v1 = [1 2 3 4 5].';
v2 = [2 2 2 2 2].';
v3 = [3 3 3 3 3].';
diagonal = spdiags([v2 v1 v3],-1:1,5,5);
matrix = full(diagonal)
輸出:
matrix =
1 3 0 0 0
2 2 3 0 0
0 2 3 3 0
0 0 2 4 3
0 0 0 2 5
在上面的程式碼中,我們製作了一個 5x5
三對角矩陣,其對角線元素儲存在三個變數:v1
,v2
和 v3
中。你可以建立任意數量的對角矩陣。你也可以使用 springs()
函式更改給定矩陣的對角線值。為此,請在第一個引數中傳遞新值,將值的位置作為第二個引數傳遞,並將要更改其值的矩陣作為第三個引數傳遞。例如,讓我們更改上述三對角矩陣的主要對角線元素。請參見下面的程式碼。
v1 = [1 2 3 4 5].';
v2 = [2 2 2 2 2].';
v3 = [3 3 3 3 3].';
diagonal = spdiags([v2 v1 v3],-1:1,5,5);
matrix1 = full(diagonal)
v4 = [9 9 9 9 9].';
diagonal = spdiags(v4,0,diagonal);
matrix2 = full(diagonal)
輸出:
matrix1 =
1 3 0 0 0
2 2 3 0 0
0 2 3 3 0
0 0 2 4 3
0 0 0 2 5
matrix2 =
9 3 0 0 0
2 9 3 0 0
0 2 9 3 0
0 0 2 9 3
0 0 0 2 9
在上面的程式碼中,我們更改了 matrix1
主對角線的值。更改值,並將新矩陣儲存在變數 matrix2
中。你還可以使用 spdaigs()
函式從給定的矩陣中提取所有非零對角線元素。例如,讓我們提取上述矩陣的非零元素。請參見下面的程式碼。
v1 = [1 2 3 4 5].';
v2 = [2 2 2 2 2].';
v3 = [3 3 3 3 3].';
diagonal = spdiags([v2 v1 v3],-1:1,5,5);
matrix = full(diagonal)
diag_Values = spdiags(matrix)
輸出:
matrix =
1 3 0 0 0
2 2 3 0 0
0 2 3 3 0
0 0 2 4 3
0 0 0 2 5
diag_Values =
2 1 0
2 2 3
2 3 3
2 4 3
0 5 3
提取給定矩陣的對角線值並將其儲存在變數 diag_values
中。對角線值儲存在矩陣的列中。第一個對角線元素儲存在第一列中,依此類推。檢視此網頁以獲取有關 diag()
函式的更多資訊。