读书人

邀请各位下载小弟我写的C++矩阵运算库

发布时间: 2012-03-19 22:03:05 作者: rapoo

邀请各位下载我写的C++矩阵运算库
最近发现资源区有好多宝贝,为了增加积分只好把最近写的矩阵库放上来,希望大家有空的时候去看看!

该库最大的特点是能够像MATLAB一样容易的做矩阵合并,取子矩阵运算。
以下是一个demo:

C/C++ code
    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;


希望这样的东西能给大家一点帮助,如果对程序有任何意见或建议请不吝赐教!

[解决办法]
up.....
[解决办法]

[解决办法]
支持
[解决办法]
探讨
补充本库的使用说明:

1.头文件
TrMatrix_Kernel.h,TrMatrix_Shell.h,TrMatrix_Main.h
使用本库只需要包含TrMatrix_Main.h即可。

2.矩阵对象
矩阵类定义为template <class S, class T = CTrMatrix_Kernel <S> >class CTrMatrix_Shell。
第一个模板参数表示矩阵元素的类型(如double型矩阵)。
第二个模板参数是系统在处理矩阵转置、分块、合并时自动使用的,自定义矩阵是都请使用默认模板参数。

如果第二个模板…

[解决办法]
呵呵,对楼主的奉献精神表示钦佩和赞赏!
[解决办法]
支持楼主

读书人网 >C++

热点推荐