MATLAB Repmat

Ammar Ali 2022년6월13일
MATLAB Repmat

이 튜토리얼에서는 MATLAB의 repmat() 함수를 사용하여 배열의 반복된 값으로 행렬을 만드는 방법에 대해 설명합니다.

MATLAB repmat() 함수

repmat() 함수는 작은 배열에서 큰 행렬을 생성합니다. 이 함수는 배열의 주어진 값을 반복하여 큰 행렬을 만듭니다.

repmat() 함수에는 세 가지 기본 구문이 있습니다. 첫 번째 구문은 아래에 나와 있습니다.

M = repmat(A,n);

위의 구문은 행과 열 차원에서 An 복사본을 포함하는 배열을 반환합니다. A가 행렬인 경우 출력 행렬 MA의 크기보다 큰 n을 곱한 행렬 A의 크기와 같습니다.

repmat() 함수의 첫 번째 인수는 입력 배열이 스칼라, 행렬, 벡터 또는 다차원 배열일 수 있다는 것입니다. 두 번째 인수는 행 및 열 차원에서 입력 배열이 반복되는 횟수를 설정합니다.

repmat() 함수의 두 번째 구문은 다음과 같습니다.

M = repmat(A,r1,...,rN);

위 구문은 각 차원에서 A 사본의 배열을 설명하는 스칼라 목록을 반환합니다. AN 차원의 행렬인 경우 M의 크기는 A의 크기보다 큽니다.

r1은 입력 배열이 첫 번째 차원에서 반복되는 횟수를 정의합니다. repmat() 함수의 세 번째 구문은 다음과 같습니다.

M = repmat(A,r);

위 구문은 행 벡터 r이 있는 반복 체계에 따라 행과 열 차원의 A 사본을 포함하는 배열을 반환합니다.

예를 들어, 벡터 r을 사용하여 주어진 배열이나 행렬이 행과 열 차원에서 반복되는 횟수를 정의할 수 있습니다. 여기에는 입력 배열이나 행렬이 출력을 생성하기 위해 반복되는 횟수가 포함됩니다. 행렬.

repmat() 함수를 사용하여 단일 값을 반복하여 행렬을 만들 수 있습니다. 예를 들어 값 5를 포함하는 2x2 행렬을 만들어 보겠습니다.

아래 코드를 참조하십시오.

clc
clear

M = repmat(5,2,2)

출력:

M =

     5     5
     5     5

clcclear 명령은 위 코드에서 명령 및 작업 영역 창을 지우는 데 사용됩니다. 출력값은 숫자 5만 포함하는 2x2 행렬입니다.

repmat() 함수를 사용하여 다른 행렬의 반복에서 행렬을 만들 수도 있습니다. 예를 들어 diag() 함수를 사용하여 대각 행렬을 만든 다음 대각 행렬을 반복하여 행렬을 만들어 보겠습니다.

아래 코드를 참조하십시오.

clc
clear

D = diag([5 15 25])
M = repmat(D,2,3)

출력:

D =

     5     0     0
     0    15     0
     0     0    25


M =

     5     0     0     5     0     0     5     0     0
     0    15     0     0    15     0     0    15     0
     0     0    25     0     0    25     0     0    25
     5     0     0     5     0     0     5     0     0
     0    15     0     0    15     0     0    15     0
     0     0    25     0     0    25     0     0    25

위의 코드에서 우리는 대각 행렬을 행 차원에서 2번, 열 차원에서 3번 반복했습니다.

입력이 3행이기 때문에 출력 행렬의 크기는 6x9가 되며 출력 행 크기가 6이 되도록 2번 반복하고 입력 행렬은 3열을 가지도록 3번 반복했습니다. 출력 열 크기가 9가 되도록 합니다.

repmat() 함수를 사용하여 3D 행렬을 만들 수도 있습니다. 반복 체계에서 세 가지 값을 사용해야 합니다.

예를 들어 repmat() 함수를 사용하여 6x3x2 행렬을 생성해 보겠습니다. 아래 코드를 참조하십시오.

clc
clear

D = diag([5 15 25])
M = repmat(D,2,1,2)

출력:

D =

     5     0     0
     0    15     0
     0     0    25


M(:,:,1) =

     5     0     0
     0    15     0
     0     0    25
     5     0     0
     0    15     0
     0     0    25


M(:,:,2) =

     5     0     0
     0    15     0
     0     0    25
     5     0     0
     0    15     0
     0     0    25

보시다시피 출력 행렬은 3차원 행렬입니다. 행 벡터의 수평 또는 수직 스택으로 행렬을 만들 수도 있습니다.

예를 들어 차원에서 벡터를 반복하지 않으려면 그 자리에 1을 전달할 수 있습니다. repmat() 함수 내에서 두 번째 인수는 첫 번째 또는 행 차원에 대한 반복 체계를 정의합니다.

세 번째 인수는 두 번째 또는 열 차원에 대한 반복 체계를 정의합니다.

예를 들어, 행 벡터의 수평 스택이 있는 행렬을 생성해 보겠습니다. 아래 코드를 참조하십시오.

clc
clear

D = (1:5)'
M = repmat(D,1,5)

출력:

D =

     1
     2
     3
     4
     5


M =

     1     1     1     1     1
     2     2     2     2     2
     3     3     3     3     3
     4     4     4     4     4
     5     5     5     5     5

위의 코드에서는 주어진 벡터를 열 벡터로 변환하여 수평 스택을 생성했지만 수직 스택의 경우 주어진 벡터를 전치할 필요가 없습니다.

repmat() 함수를 사용하여 작은 테이블에서 큰 테이블을 만들 수도 있습니다. 예를 들어 table() 함수를 사용하여 테이블을 만들고 첫 번째 테이블에서 또 다른 큰 테이블을 생성해 보겠습니다.

아래 코드를 참조하십시오.

clc
clear

T_1 = table([19; 16],[60; 53],'VariableNames',{'Age' 'Height'})
T_2 = repmat(T_1, 2,2)

출력:

T_1 =

  2×2 table

    Age    Height
    ___    ______

    19       60
    16       53


T_2 =

  4×4 table

    Age    Height    Age_1    Height_1
    ___    ______    _____    ________

    19       60       19         60
    16       53       16         53
    19       60       19         60
    16       53       16         53

위의 코드에서는 행과 열 차원을 2번 반복하여 더 큰 테이블을 만들었습니다.

작가: 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