strassen方法求任意行列数的矩阵乘法
来源:互联网 发布:nginx配置地址转发 编辑:程序博客网 时间:2024/05/22 00:32
根据之前的文章strassen方法求矩阵乘法,我们只需要在使用strassen方法前对矩阵进行处理,对任意行列数的矩阵mxn,在最后一行或最后一列后面添加0,使行数和列数补齐为2的幂。
修改之前的代码如下:
void MatrixMultipy(int* a, int arow, int acol, int* b, int brow, int bcol, int* c){ int aM = 1; while (aM < arow) { aM *= 2; } int aN = 1; while (aN < acol) { aN *= 2; } DATATYPE* aa = new DATATYPE[aM*aN]; memset(aa, 0, sizeof(DATATYPE)*aM*aN); SubMat A(aa, aM, aN); for (int i = 0; i < arow; i++) { for (int j = 0; j < acol; j++) { A.SetData(i, j, a[i*acol+j]); } } int bM = 1; while (bM < brow) { bM *= 2; } int bN = 1; while (bN < bcol) { bN *= 2; } DATATYPE* bb = new DATATYPE[bM*bN]; memset(bb, 0, sizeof(DATATYPE)*bM*bN); SubMat B(bb, bM, bN); for (int i = 0; i < brow; i++) { for (int j = 0; j < bcol; j++) { B.SetData(i, j, b[i*bcol + j]); } } DATATYPE* cc = new DATATYPE[aM*bN]; memset(cc, 0, sizeof(DATATYPE)*aM*bN); SubMat C(cc, aM, bN); MatrixMultiplyAB(A,B,C); for (int i = 0; i < arow; i++) { for (int j = 0; j < bcol; j++) { c[i*bcol + j] = C.GetData(i, j); } }}
0 0
- strassen方法求任意行列数的矩阵乘法
- Strassen方法求矩阵乘法
- 矩阵乘法的Strassen
- 矩阵乘法的Strassen算法
- 矩阵乘法的Strassen算法
- 矩阵乘法-Strassen矩阵乘法
- 矩阵乘法Strassen算法的伪代码
- Strassen矩阵乘法
- Strassen矩阵乘法
- Strassen矩阵乘法
- Strassen矩阵乘法
- strassen矩阵乘法
- Strassen矩阵乘法
- Strassen矩阵乘法
- Strassen矩阵乘法
- Strassen矩阵乘法
- strassen矩阵乘法
- Strassen矩阵乘法
- 【Python数据挖掘课程】五.线性回归知识及预测糖尿病实例
- Constructor详解
- Codeforces 722C - Destroying Array By Assassin
- c3p0-数据库连接池
- 【共享内存】共享内存
- strassen方法求任意行列数的矩阵乘法
- LeetCode 413. Arithmetic Slices 题解
- 10043---RabbitMq、ActiveMq、ZeroMq、kafka之间的比较,资料汇总
- C++读书笔记2:C++基础(类、对象、构造与析构)
- 在RHEL7或者OL7上安装11.2.0.4的GI时需要特别注意的问题
- C++读书笔记3:继承与多态
- Tornado 多进程实现分析
- 投资人豪赌 共享单车吸金超10亿
- 我为什么还在做投资?