请讨论矩阵类

swnuwangyun 2002-12-28 03:19:32
希望大家对使用模板技术设计矩阵类进行深入的探讨
...全文
42 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
bathing 2003-01-20
  • 打赏
  • 举报
回复
你用google搜索blitz++(应该是在www.oonumerics.org,记不太清楚了),一个非常好的矩阵类,其次是mtl,另外到www.netlib.org看看c++的lapack++和它的后继TNT
xuejm 2003-01-20
  • 打赏
  • 举报
回复
真厉害!不用自己写吧。如果什么都自己写,那么我们什么时候实现小康啊!
已经有人写好了,叫做MTL(Matrix Template Library)。可以直接用的。
blas 2003-01-14
  • 打赏
  • 举报
回复
临时对象?Bjarne Stroustrup 的书中不是讲到过如何消除的吗!
The C++ Programming Language--numeric
嵌云阁主 2003-01-13
  • 打赏
  • 举报
回复
做乘法或其它的算法可以参考lapack中的某些函数。
http://www.netlib.org/可以下载。

要像matlab那个灵活不是做不到,但是很难兼顾效率。
我做了一个类,可以实现这样的形式:
TMMatrix<int> v1, v2;
v1[_r(2, 30)][_r(1, 20)] = v2[_r()][_r()];
但是其间产生了8个临时对象,效率过低,不知有哪位高手能够指教?
blas 2003-01-08
  • 打赏
  • 举报
回复
谁能写个程序使两个1000*1000矩阵的乘法的运算时间不超过matlab的一倍
majiangping 2003-01-05
  • 打赏
  • 举报
回复
MTL是什么?
suncfboy 2003-01-05
  • 打赏
  • 举报
回复
我用的是《c++程序设计语言(特别版)》中的矩阵类的例子。
然后作了扩充和修改。
目标是像matlab矩阵类一样灵活。
现在工程正在进行,如果有兴趣,大家一起探讨。
chaisave 2003-01-04
  • 打赏
  • 举报
回复
我也用过MTL,挺好使的。
不过编译前要先改一下它的源码,不知现在的版本要不要改。
liu_feng_fly 2003-01-03
  • 打赏
  • 举报
回复
直接使用stl不好吗?或者,可以借鉴stl::valarray的实现,做一个更好的?
lak47 2003-01-03
  • 打赏
  • 举报
回复
类Matrix中我想应有这样几个函数
void identity();
template<typename T1,int R1,int C1>
Matrix(const Matrix<T1,R1,C1>& );

template<typename T1,int R1,int C1>
Matrix& opreator(const Matrix<T1,R1,C1>& );

Matrix* invert();//转置
还应重载乘法操作符
lak47 2003-01-03
  • 打赏
  • 举报
回复
inner类_Row中这样定义
class _Row
{
public:
template<typename _T1>
_Row operator +(_T1 _x)const;
_Row operator +(const _Row& _x)const;
template<typename _T1>
_Row& operator +=(_T1 _x);
_Row& operator +=(const _Row& _x);

template<typename _T1>
_Row operator -(_T1 _x)const;
_Row operator -(const _Row& _x)const;
template<typename _T1>
_Row& operator -=(_T1 _x);
_Row& operator -=(const _Row& _x);

template<typename _T1>
_Row operator *(_T1 _x)const;
template<typename _T1>
_Row& operator *=(_T1 _x);

template<typename _T1>
_Row operator /(_T1 _x)const;
template<typename _T1>
_Row& operator /=(_T1 _x);

_T& operator [](int n);
const _T operator[](int n)const;
private:
_T _data[_C];
};
lak47 2003-01-03
  • 打赏
  • 举报
回复
我的思路是:
template<typename _T,int _R,int _C>
class Matrix
{
public:
class _Row{
};

const _Row& operator[](int n)const;
_Row& operator[](int n);
private:
_Row _data[_R];
}
kangde 2002-12-30
  • 打赏
  • 举报
回复
用MTL啊
shornmao 2002-12-30
  • 打赏
  • 举报
回复
std::valarray,去看吧。
lak47 2002-12-29
  • 打赏
  • 举报
回复
明天放假了,回家看看以前写的矩阵类代码再来
serverclient 2002-12-29
  • 打赏
  • 举报
回复
大矩阵一般是用“十字链表”的方式来存储。
大矩阵地运算一般用分块运算的方法,或者直接调用Matlab进行计算。
其他的我也不清楚了,矩阵的运算太复杂多变,不太容易设计一个时间
空间效率都好的类吧。哪怕是用Template。
Reve 2002-12-29
  • 打赏
  • 举报
回复
可行,我已经实现了,但没有优化,没时间

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧