Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

kron

Kronecker 张量积

说明

示例

K = kron(A,B) 返回矩阵 ABKronecker 张量积。如果 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 计算 Kronecker 张量积。

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 分块对角矩阵。

通过重复元素来扩展矩阵大小。

创建一个 2×2 的全 1 矩阵,以及一个需要重复其元素的 2×3 矩阵。

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

使用 kron 计算 Kronecker 张量积。

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 分块矩阵。

此示例以可视方式呈现稀疏拉普拉斯算子矩阵。

离散拉普拉斯算子在二维 n×n 网格中的矩阵表示形式是 n*n×n*n 稀疏矩阵。每行或每列中最多有 5 个非零元素。可以采用一维差分算子的 Kronecker 积的形式生成矩阵。在此示例中,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 仅乘以非零元素,其结果也是稀疏矩阵。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
复数支持:

详细信息

全部折叠

Kronecker 张量积

如果 Am×n 矩阵,而 Bp×q 矩阵,则 AB 的 Kronecker 张量积是通过将 B 乘以 A 的各元素形成的一个大型矩阵。

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 之前推出

另请参阅

| | | |