ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 两种矩阵的 Kronecker 积 > 原文: [https://www.geeksforgeeks.org/kronecker-product-two-matrices/](https://www.geeksforgeeks.org/kronecker-product-two-matrices/) 给定![ {m}\times{n} ](https://img.kancloud.cn/0d/93/0d93b2169e6583a2490312f0a17e90ae_70x13.png "Rendered by QuickLaTeX.com")矩阵 A 和![ {p}\times{q} ](https://img.kancloud.cn/c8/58/c858f8316dc270afb180cf7e9eba245f_58x18.png "Rendered by QuickLaTeX.com")矩阵 B,它们的 **Kronecker 积** C = A 张量 B,也称为它们的矩阵直接积,是![ {(mp)}\times{(nq)} ](https://img.kancloud.cn/82/3f/823fdc1821ac894228edb0b7e08ba25f_134x27.png "Rendered by QuickLaTeX.com")矩阵。 ``` A tensor B = |a11B a12B| |a21B a22B| = |a11b11 a11b12 a12b11 a12b12| |a11b21 a11b22 a12b21 a12b22| |a11b31 a11b32 a12b31 a12b32| |a21b11 a21b12 a22b11 a22b12| |a21b21 a21b22 a22b21 a22b22| |a21b31 a21b32 a22b31 a22b32| ``` **示例**: ``` 1\. The matrix direct(kronecker) product of the 2×2 matrix A and the 2×2 matrix B is given by the 4×4 matrix : Input : A = 1 2 B = 0 5 3 4 6 7 Output : C = 0 5 0 10 6 7 12 14 0 15 0 20 18 21 24 28 2\. The matrix direct(kronecker) product of the 2×3 matrix A and the 3×2 matrix B is given by the 6×6 matrix : Input : A = 1 2 B = 0 5 2 3 4 6 7 3 1 0 Output : C = 0 5 2 0 10 4 6 7 3 12 14 6 0 15 6 0 20 8 18 21 9 24 28 12 0 5 2 0 0 0 6 7 3 0 0 0 ``` 下面是找到两个矩阵的 **Kronecker 乘积**并将其存储为矩阵 C 的代码: ## C++ ```cpp // C++ code to find the Kronecker Product of two // matrices and stores it as matrix C #include <iostream> using namespace std; // rowa and cola are no of rows and columns // of matrix A // rowb and colb are no of rows and columns // of matrix B const int cola = 2, rowa = 3, colb = 3, rowb = 2; // Function to computes the Kronecker Product // of two matrices void Kroneckerproduct(int A[][cola], int B[][colb]) {     int C[rowa * rowb][cola * colb];     // i loops till rowa     for (int i = 0; i < rowa; i++) {         // k loops till rowb         for (int k = 0; k < rowb; k++) {             // j loops till cola             for (int j = 0; j < cola; j++) {                 // l loops till colb                 for (int l = 0; l < colb; l++) {                     // Each element of matrix A is                     // multiplied by whole Matrix B                     // resp and stored as Matrix C                     C[i + l + 1][j + k + 1] = A[i][j] * B[k][l];                     cout << C[i + l + 1][j + k + 1] << " ";                 }             }             cout << endl;         }     } } // Driver Code int main() {     int A[3][2] = { { 1, 2 }, { 3, 4 }, { 1, 0 } },         B[2][3] = { { 0, 5, 2 }, { 6, 7, 3 } };     Kroneckerproduct(A, B);     return 0; } //This code is contributed by shubhamsingh10 ```