1. 简述

注意下标、参数传递。只要把二维中下标,转化为一维数组的下标即可。

2. 核心代码
    二维的公式是:c[i][j] += a[i][k] * b[k][j], k=0,1,2,...,N-1
    一维的公式:   c[i*N+j] += a[i*N+k] * b[k*N+j], k=0,1,2,...,N-1

template<class T>
void MaxtrixMultiply(const T* a,const T* b, T* c, unsigned int N) {
  for(int i=0; i<N; i++) {
    for(int j=0; j<N; j++) {
      int c_index = i*N+j;
      int a_index = i*N+0;
      int b_index = 0*N+j;
      c[c_index] = 0;
      for(int k=0; k<N; k++) {
        c[c_index] += a[a_index]*b[b_index];
        a_index += 1;
        b_index += N;
      } // for
    } // for  
  } // for
} // MaxtrixMultiply

代码中,为了减少乘法次数,首先计算矩阵a,b,c的下标,然后在循环通过加法,更新a和b的下标。空间换时间,减少了计算下标所用的时间。

3. 备注

矩阵相乘是可以优化的,斯特拉森算法就可以把时间复杂度降低到n^(log7),不过原始算法是需要假设n是2的幂,而且实现中,需要分块,如果对一维数值进行分块的话,实现起来反而会增加时间和空间的负担。对于斯特拉森算法以后有机会再看了,今天就到这里。

4. 参考

矩阵相乘算法_C语言空间    http://blog.csdn.net/chief1985/article/details/2402553

实现两个N*N矩阵的乘法,矩阵由一维数组表示相关推荐

  1. 【算法分析与设计】矩阵链乘法最优顺序问题

    矩阵链乘法 矩阵连乘,选择不同的乘法顺序,效率可能千差万别. 高效的实现算法应该用动态规划来设计,具体的讲解可以看这里. 编程实现 public class Main {private static ...

  2. C++ 两个矩阵的乘法

    C++ 两个矩阵的乘法 #include<stdio.h> #include<windows.h> void Multi(int * left, int * right, in ...

  3. 6-2 编写Matrix类,使用二维数组实现矩阵,实现两个矩阵的乘法。 (30分) java pta

    编写程序题, 根据要求编写一个Java类,补充到代码中. 定义Matrix(矩阵)类,使用二维数组实现矩阵,实现两个矩阵的乘法.要求如下: 4个变量:row(行数),column(列数), matri ...

  4. 【Android 应用开发】Paint 滤镜原理 之 颜色矩阵 ( 颜色模式 | 颜色通道 | 颜色矩阵 | 矩阵运算 | 矩阵乘法 | 矩阵加法 | 颜色矩阵深入解析 )

    文章目录 颜色模式 颜色通道 Android 中的颜色矩阵 矩阵乘法运算 滤镜中的矩阵乘法运算 矩阵加法运算 滤镜中的矩阵乘法运算 滤镜运算原理 ( 总结 ) 实际滤镜理论示例 颜色模式 颜色模式 : ...

  5. python矩阵和向量乘法总结

    向量之间的乘法 torch.dot 点乘,相同维度的两个向量对应元素相乘再相加 torch.mul 对应元素相乘,结果同a*b 例子如下: 矩阵与向量的乘法 要求:矩阵的列数=向量的维数 结果:矩阵乘 ...

  6. 矩阵分解 (乘法篇)

    引自简书:https://www.jianshu.com/p/0741789ffd06 引言 前面我们在矩阵分解 (加法篇)里面分析的加法下的矩阵分解. 这里我们来看看乘法下矩阵分解的要点. 对角和三 ...

  7. 矩阵乘法——矩阵快速幂

    矩阵乘法怎么乘 设让矩阵 aaa 乘矩阵 bbb 得到矩阵 ccc,那么 ccc 的第 iii 行第 jjj 个元素的值就等于 aaa 的第 iii 行与 bbb 的第 jjj 列上对应元素相乘的和. ...

  8. 03矩阵的乘法与逆矩阵

    矩阵的乘法和逆矩阵 Multiplication & inverse matrices ​ 两个矩阵间的乘法.逆矩阵存在的条件.求解逆矩阵的方法 矩阵乘法 我们通过四种方法讨论如何使矩阵 A ...

  9. python三维矩阵乘法_tensorflow 二维矩阵乘以三维矩阵,高维矩阵相乘

    最近看论文时看到了一个让我费解的操作. 二维矩阵 * 三维矩阵 * 二维矩阵 得到了一个二维矩阵. 即: (n * c1) x (m * c1 * c2) x (n * c2) 得 n * m 实现主 ...

  10. 如何理解矩阵的乘法?

    如何理解矩阵的乘法? 转载:http://www.360doc.com/content/18/0208/09/15930282_728535573.shtml 2018-02-08 风九天88 阅 1 ...

最新文章

  1. GPT-2:OpenAI的NLP商业化野望
  2. morlet包络检波matlab,布里渊光纤传感系统中的信号处理的研究
  3. UITextField的总结
  4. 阿里巴巴400集python教程_阿里巴巴推荐的400集Python视频合集免费学起来,学完万物皆可爬...
  5. 用C语言实现三子棋游戏
  6. 阿里用户体验大师教你如何让产品更加触动人心
  7. rust(67)-rust元组与空元组
  8. Zookeeper实战之单机模式
  9. 深度学习项目-人群密度估计
  10. CSS3-多列布局-伸缩盒布局-伸缩项目
  11. pytorch中创建多个空的tensor、pycharm从自己写的.py中引用函数下面画红线等问题
  12. 数据分析: 线性回归分析之研究二手房价的影响因素,建立房价预测模型
  13. 销售计算机流程图,flowchart_请问在电脑WORD中怎样画流程图?
  14. 华为机试真题 Python 实现【最短木板长度】【100%通过率】【2022.11 Q4 新题】
  15. 【工具】pip安装不在当前虚拟环境中
  16. css3 - 图标元素动画效果5 - 弹性动画效果
  17. 训练集、验证集和测试集这三个名词的区别
  18. 好用又免费的办公软件
  19. ubuntu 输入法、邮箱迁移、词典、CHM阅读器
  20. 案例分析 陆金所_平安陆金所--金融跨界,一“陆”有礼

热门文章

  1. linux 负载进程,Linux 中 D 状态的进程与平均负载
  2. python项目代做_ECS 170代做、代写Python、data代做、代做Python程序代写Web开发|代写Database...
  3. 电脑配置知识_电脑小知识:装机不求人!10 分钟电脑配置挑选速成攻略|硬盘|电脑|cpu|装机|固态硬盘|机械硬盘...
  4. Kotlin — 实现JavaEE 开发Web工程
  5. Kotlin基础学习第6章—高阶函数
  6. DRF基类APIView的子类GenericAPIView
  7. Appium——元素定位
  8. 6.字符串截取数据求平均分
  9. 寻访x86处理器“实模式”和“保护模式”的前世今生
  10. Oracle 客户端安装 + pl/sql工具安装配置