MATLAB 대각선 행렬

Ammar Ali 2023년1월30일
  1. MATLAB에서diag()함수를 사용하여 대각선 행렬 만들기
  2. MATLAB에서spdiags()함수를 사용하여 대각 행렬 만들기
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

위의 코드에서 우리는 변수vector에 저장된 대각선 항목으로5x5대각 행렬을 만들었습니다. 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

위의 코드에서 우리는v1,v2,v3의 세 변수 안에 대각선 항목이 저장된5x5삼중 대각 행렬을 만들었습니다. 원하는만큼의 값으로 대각 행렬을 만들 수 있습니다. 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()함수를 사용하여 주어진 행렬에서 0이 아닌 모든 대각선 항목을 추출 할 수도 있습니다. 예를 들어 위의 행렬에서 0이 아닌 항목을 추출해 보겠습니다. 아래 코드를 참조하십시오.

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()함수에 대한 자세한 정보는이 링크를 확인하십시오.

작가: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

관련 문장 - MATLAB Matrix