邀请各位下载我写的C++矩阵运算库
最近发现资源区有好多宝贝,为了增加积分只好把最近写的矩阵库放上来,希望大家有空的时候去看看!
该库最大的特点是能够像MATLAB一样容易的做矩阵合并,取子矩阵运算。
以下是一个demo:
matrix a=matrix::unit(4); //4阶单位阵。 matrix c(a); a(1,2)=2; //此时矩阵a的副本c任然不变。 cout<<a<<c<<endl; c=a; //此时c是a的一个副本。 a(2,1,false)=10; //此时矩阵所有的副本(比如c)都会改变,如果确定矩阵没有副本使用此方法可以提升速度。 cout<<a<<c<<endl; cout<<a.inv()<<endl; //逆矩阵。 matrix b(a(1)*a(_ALL,2)); //矩阵a的第一行乘以矩阵的第二列,结果赋给b。相当于MATLAB语句:b=a(1,:)*a(:,2)。 cout<<b<<endl; _index id1,id2; //_index类型继承自vector<size_t>,用来表示子矩阵取自原矩阵的那些行(列)。 id1.push_back(1); id1.push_back(2); id2.push_back(3); id2.push_back(4); a(id1)+=a(id2); //将三、四行构成的子矩阵加到一、二行。相当于MATLAB语句:a(1:2,:)=a(1:2,:)+a(3:4,:)。 cout<<a<<endl; b=(b|b|b|b)&a; //将四个b纵向合并构成的矩阵横向合并a,赋给b。相当于MATLAB语句:b=[[b;b;b;b],a]。 cout<<b<<endl; b.swap_col(2,3); //交换b的二、三列。 cout<<b<<endl;