矩阵乘法运算
2017-01-06 15:31
253 查看
struct Matrix:vector<vector<int> >//使用标准容器vector做基类,需#include语句 { Matrix(int x=0,int y=0,int z=0)//初始化,默认为0行0列空矩阵 { assign(x,vector<int>(y,z)); } int h_size()const//常量说明不可省,否则编译无法通过 { return size(); } int l_size()const { return empty()?0:front().size();//列数要考虑空矩阵的情况 } Matrix pow(int k);//矩阵的k次幂,用快速幂实现,k为0时返回此矩阵的单位矩阵 }; Matrix operator*(const Matrix &m,const Matrix &n)//常量引用避免拷贝 { if(m.l_size()!=n.h_size())return Matrix();//非法运算返回空矩阵 Matrix ans(m.h_size(),n.l_size()); for(int i=0; i!=ans.h_size(); ++i) for(int j=0; j!=ans.l_size(); ++j) for(int k=0; k!=m.l_size(); ++k) ans[i][j]+=m[i][k]*n[k][j]; return ans; } Matrix Matrix::pow(int k) { if(k==0) { Matrix ans(h_size(),h_size()); for(int i=0; i!=ans.h_size(); ++i) ans[i][i]=1; return ans; } if(k==2)return (*this)*(*this); if(k%2)return pow(k-1)*(*this); return pow(k/2).pow(2); }
转自:http://baike.baidu.com/link?url=K65Gp4RS3rU-JYNHBR8P188gotA3ddOJAMgdEulwFRunrDUSPW0U2O2SYthPeCv8iNAYnyJWRoQJB08f-lm4mT8aMDC25BZp3OnZQW9ajKGOr58bDIW5HgwuKEWUrny5
相关文章推荐
- java第七周封装一类对矩阵操作的对象,该类对象能够对矩阵进行运算,如矩阵中数据的位置变换功能、矩阵的加法功能、矩阵的乘法功能。
- 矩阵的乘法运算
- 线性代数·矩阵的加法减法乘法运算简单实现
- 矩阵乘法及矩阵快速幂运算
- 稀疏矩阵的各种基本运算并加法乘法
- 7. 稀疏矩阵的乘法运算
- java 简单矩阵乘法运算
- 数据结构之矩阵的乘法运算
- 矩阵的运算的乘法次数(栈的模拟应用)
- 矩阵乘法运算图解
- 线性代数(四) :矩阵乘法的性质与分块矩阵的运算
- oj程序调试--矩阵的乘法运算
- java第二周作业--实现矩阵的加法和乘法运算
- 通过矩阵乘法看内存访问对CPU运算速度的影响
- cublas中执行矩阵乘法运算的函数 首先要注意的是cublas使用的是以列为主的存储方式,和c/c++中的以行为主的方式是不一样的。处理方法可参考下面的注释代码
- 卷积运算转换为矩阵乘法
- 使用一维数组和二维数组来存储矩阵并进行乘法运算
- 8. 稀疏矩阵的乘法运算
- 矩阵基础 (3). 分块矩阵的加法和乘法运算
- 利用CUDA的矩阵乘法1 <利用 Kahan's Summation Formula 来提高CUDA 的浮点数运算精确度>