MATLAB repelem() 함수

Ammar Ali 2023년6월20일
MATLAB repelem() 함수

이 튜토리얼에서는 MATLAB의 repelem() 기능을 사용하여 배열 요소의 반복 복사에 대해 설명합니다.

MATLAB repelem() 함수

많은 요소의 배열을 수동으로 생성하려면 각 배열 요소를 작성해야 하기 때문에 많은 시간이 걸립니다. 그러나 루프와 Matlab의 일부 내장 기능을 사용하여 짧은 시간에 많은 요소의 배열을 만들 수 있습니다.

repelem() 함수는 스칼라 또는 벡터를 반복하여 짧은 시간에 많은 수의 요소 배열을 만드는 데 사용됩니다. repelem() 함수는 배열 요소의 복사본을 반복하고 반복된 요소에서 새 배열 또는 행렬을 만드는 데 사용됩니다.

repelem() 함수에는 두 가지 구문이 있으며 첫 번째 구문은 아래와 같습니다.

output = repelem(v,n)

첫 번째 구문은 벡터 또는 스칼라 v의 반복 요소 벡터를 반환합니다. n이 스칼라인 경우 입력 벡터 v 값은 n번 반복되고 출력 벡터의 길이는 n을 곱한 입력 벡터의 길이와 같습니다.

n이 벡터이면 벡터 v의 각 요소는 벡터 n의 해당 요소에 따라 반복되며 벡터 n은 입력 벡터 v와 동일한 길이를 가져야 합니다. 출력 벡터의 길이는 벡터 n 요소의 합과 같습니다.

즉, 벡터 v의 첫 번째 요소는 벡터 n의 첫 번째 요소에 따라 반복됩니다. 예를 들어, 벡터를 생성하고 이를 반복하여 두 개의 새로운 벡터를 생성해 봅시다.

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

clc
clear

X = [1 2 3]
Y = repelem(X,2)
Z = repelem(X,[1 2 3])

출력:

X =

     1     2     3


Y =

     1     1     2     2     3     3


Z =

     1     2     2     3     3     3

위의 코드에서 벡터 X의 각 요소를 두 번 반복하여 새 벡터 Y를 생성했습니다. 벡터 X의 첫 번째 요소를 한 번, 벡터 X의 두 번째 요소를 두 번, 세 번째 요소를 세 번 반복하여 새 벡터 Z를 만들었습니다.

출력에서 벡터 X의 각 요소가 벡터 Y를 생성하기 위해 두 번 반복되는 것을 볼 수 있으며, 벡터 Z는 두 번째 에서 두 번째 인수로 정의된 벡터에 따라 생성됨을 보여줍니다. repelem() 함수.

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

output = repelem(m,r1,...,rN)

두 번째 구문은 행렬의 요소를 반복하여 새로운 2D 또는 3D 행렬 및 배열을 만드는 데 사용됩니다. 첫 번째 인수 m은 모든 차원이 될 수 있는 입력 행렬 또는 배열입니다.

다른 모든 인수는 입력 행렬 또는 배열의 각 요소를 반복하는 데 사용되는 블록 크기를 설정하는 데 사용되며 스칼라 또는 입력 행렬의 특정 차원과 동일한 길이의 벡터가 될 수 있습니다. 예를 들어 repelem() 함수 내부의 두 번째 및 세 번째 인수로 2와 3을 전달하면 입력 행렬의 각 요소를 반복하고 새 행렬에 배치하여 2x3 행렬을 만듭니다.

즉, 입력 행렬의 각 요소는 행 또는 첫 번째 차원에서 두 번, 열 또는 두 번째 차원에서 세 번 반복되어 새로운 배열 또는 행렬을 만듭니다. 네 번째 인수를 전달하면 입력 행렬의 각 요소도 3차원에서 반복되어 다차원 배열 또는 행렬을 만듭니다.

예를 들어 2x2 행렬을 만들고 해당 요소를 반복하여 새 행렬을 만들어 보겠습니다. 아래 코드를 참조하십시오.

clc
clear

X = magic(2)
Y = repelem(X,2,2)

출력:

X =

     1     3
     4     2


Y =

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

위의 코드에서 입력 행렬의 각 요소를 첫 번째 또는 행 차원에서 두 번, 두 번째 또는 열 차원에서 두 번 반복하여 새 행렬을 만들었습니다. 출력 행렬의 크기는 입력 벡터의 특정 차원과 블록 크기의 곱과 같습니다.

위의 예에서 입력 행렬 크기가 2x2이고 블록 크기도 2x2이므로 출력 행렬의 크기는 4x4가 됩니다. 출력 행렬의 차원은 위의 예와 같이 블록 크기의 차원과 같으며 블록은 2차원이고 출력 행렬도 2차원입니다.

특정 차원에서 요소를 반복하지 않으려면 해당 차원의 값으로 하나를 전달할 수 있습니다. 예를 들어 행 수가 동일하도록 첫 번째 또는 행 차원의 요소를 반복하지 않으려면 위 코드에서 하나를 두 번째 인수로 전달할 수 있습니다.

위의 예에서 각 요소는 두 차원에서 2번 반복됩니다. 그러나 요구 사항에 따라 각 요소를 반복하려는 경우 특정 요소가 반복되는 횟수를 정의하는 특정 차원과 동일한 길이의 벡터를 사용할 수 있습니다.

예를 들어 위의 예를 반복하여 벡터에 따라 열 값만 반복해 보겠습니다. 아래 코드를 참조하십시오.

clc
clear

X = magic(2)
Y = repelem(X,1,[3 2])

출력:

X =

     1     3
     4     2


Y =

     1     1     1     3     3
     4     4     4     2     2

위의 코드에서 입력 행렬의 첫 번째 열을 3번 반복하고 두 번째 열을 2번 반복하여 새 행렬 Y를 만듭니다. 위 출력에서 행을 반복하지 않았기 때문에 출력 행렬의 행 수가 입력 행렬의 행 수와 같고 첫 번째 열을 세 번 반복했기 때문에 열 수가 증가한 것을 볼 수 있습니다. 두 번째 열은 2번입니다.

이 작업은 모든 차원에서 수행할 수 있습니다. 또한 repelem() 함수를 사용하여 특정 차원에서 값을 반복하여 작은 테이블에서 큰 테이블을 만들 수 있습니다.

예를 들어 table() 함수를 사용하여 테이블을 만든 다음 첫 번째 테이블의 값을 반복하여 또 다른 큰 테이블을 만듭니다. 아래 코드를 참조하십시오.

clc
clear

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

출력:

T_1 =

  2×2 table

    Age    Height
    ___    ______

    19       60
    16       53


T_2 =

  4×4 table

    Age    Age_1    Height    Height_1
    ___    _____    ______    ________

    19      19        60         60
    19      19        60         60
    16      16        53         53
    16      16        53         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 Array