曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 4423|回复: 0
打印 上一主题 下一主题

矩阵与矩阵相乘

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2009-9-12 16:36:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
矩阵与矩阵相乘应满足的条件:
1、矩阵 A 的列数必须等于矩阵 B 的行数;
2、设矩阵 C 是矩阵A 与 矩阵B 相乘结果存放的矩阵,那么矩阵 C 的行数等于矩阵A 的行数,矩阵C 的列数等于矩阵 B 的列数;
3、矩阵C 中的第 i 行 j 列的元素是 矩阵A 中的第 i 行元素与 矩阵B 中第 j 列元素的乘积之和。

例子如下图所示:



C 语言算法(以上面为例):
#include <stdio.h>

int main()
{
    int a [2][3] = {{1, 4, 6}, {2, 8, 5}};
    int b [3][2] = {{3,7}, {9,5}, {8,4}};
    int c [2][2];
   
    int i;
    int j;
    int k;   
   
    for (i = 0; i < 2; i++)
        for (j = 0; j < 2; j++) {
            c [i][j] = 0;

            for (k = 0; k <= 2; k++)
                c [i][j] += a [i][k] * b [k][j];
    }

    printf ("[%d][%d]\n", c[0][0],c[0][1]);
    printf ("[%d][%d]\n", c[1][0],c[1][1]);

    return (0);
}
运行与输出
beyes@linux-beyes:~/C/structer> ./matrix.exe
[87][51]
[118][74]

说明
第一层 for 循环中的 i 表示,矩阵 A 由于有 2 行,所以要进行 2 次循环才完成矩阵的运算。
第二层 for 循环中的 j 表示,矩阵 B 由于有 2 列,矩阵A中的每一行都要与矩阵B中的每1列相乘。
第三层 for 循环中的 k 表示,矩阵A的每行和矩阵B的每列都有 3 个元素,所以需要有 3 次的相乘然后相加的运算才会得到矩阵C中的一个元素值。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-17 16:32 , Processed in 0.076652 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表