Main Content

kron

크로네커 텐서 곱(Kronecker Tensor Product)

설명

예제

K = kron(A,B)는 행렬 AB크로네커 텐서 곱을 반환합니다. Am×n 행렬이고 Bp×q 행렬인 경우 kron(A,B)A의 요소와 행렬 B 간에 가능한 모든 곱을 취해서 만들어지는 m*p×n*q 행렬이 됩니다.

예제

모두 축소

블록 대각 행렬을 만듭니다.

대각선을 따라 반복할 4×4 단위 행렬과 2×2 행렬을 만듭니다.

A = eye(4);
B = [1 -1;-1 1];

kron을 사용하여 크로네커 텐서 곱을 구합니다.

K = kron(A,B)
K = 8×8

     1    -1     0     0     0     0     0     0
    -1     1     0     0     0     0     0     0
     0     0     1    -1     0     0     0     0
     0     0    -1     1     0     0     0     0
     0     0     0     0     1    -1     0     0
     0     0     0     0    -1     1     0     0
     0     0     0     0     0     0     1    -1
     0     0     0     0     0     0    -1     1

결과는 8×8 블록 대각 행렬이 됩니다.

행렬의 요소를 반복하여 행렬의 크기를 확장합니다.

1로 이루어진 2×2 행렬과 요소를 반복할 2×3 행렬을 만듭니다.

A = [1 2 3; 4 5 6];
B = ones(2);

kron을 사용하여 크로네커 텐서 곱을 계산합니다.

K = kron(A,B)
K = 4×6

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

결과는 4×6 블록 행렬이 됩니다.

이 예제에서는 희소 라플라시안 연산자 행렬을 시각화합니다.

2차원의 n×n 그리드에서 이산 라플라시안(Discrete Laplacian) 연산자의 행렬 표현은 n*n×n*n 희소 행렬입니다. 각 행이나 열에는 0이 아닌 요소가 최대 5개 있습니다. 이 행렬을 1차원 차분 연산자의 크로네커 곱으로 생성할 수 있습니다. 이 예제에서는 n = 5입니다.

n = 5;
I = speye(n,n);
E = sparse(2:n,1:n-1,1,n,n);
D = E+E'-2*I;
A = kron(D,I)+kron(I,D);

spy를 사용하여 희소성 패턴을 시각화합니다.

spy(A,'k')

Figure contains an axes object. The axes object with xlabel nz = 105 contains a line object which displays its values using only markers.

입력 인수

모두 축소

입력 행렬로, 스칼라, 벡터, 행렬 중 하나로 지정됩니다. AB 중 하나가 희소 행렬인 경우 kron은 0이 아닌 요소만 곱하므로 그 결과 역시 희소 행렬이 됩니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
복소수 지원 여부:

세부 정보

모두 축소

크로네커 텐서 곱(Kronecker Tensor Product)

Am×n 행렬이고 Bp×q 행렬인 경우 AB의 크로네커 텐서 곱은 BA의 각 요소에 곱하여 만들어지는 큰 행렬이 됩니다.

AB=[a11Ba12Ba1nBa21Ba22Ba2nBam1Bam2BamnB].

예를 들어, 두 개의 간단한 2×2 행렬의 경우 다음과 같은 결과를 얻을 수 있습니다.

A=[1210],B=[4323]AB=[1·41·32·42·31·21·32·22·31·41·30·40·31·21·30·20·3]=[4386234643002300].

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

버전 내역

R2006a 이전에 개발됨

참고 항목

| | | |