资源简介
这个一个老外写的矩阵类,用C++实现,注释详细,把线性代数里用到的加减乘除和转置、求逆等矩阵运算都实现了,小可查到并修改了几个小错误,几近完美了。
代码片段和文件信息
// Matrix.cpp: implementation of the CMatrix class.
//
//////////////////////////////////////////////////////////////////////
#include “stdafx.h“
#include “Matrix.h“
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction CMatrix
//////////////////////////////////////////////////////////////////////
IMPLEMENT_SERIAL(CMatrix Cobject 1) ;
#ifdef _DEBUG
int CMatrix::m_NextobjectNumber = 1 ;
#endif
CMatrix::CMatrix()
{
#ifdef _DEBUG
// so we can regonise each individual object
m_objectNumber = m_NextobjectNumber++ ;
TRACE(“Creating CMatrix object %1d - default constructor\n“ m_objectNumber) ;
#endif
// default constructor create a 1 * 1 array
m_NumColumns = 1 ;
m_NumRows = 1 ;
m_pData = NULL ;
m_pData = AllocateMemory(m_NumColumns m_NumRows) ;
IncrementReferenceCount() ; // count the reference to this memory
}
CMatrix::CMatrix(const CMatrix &other)
{
#ifdef _DEBUG
// so we can regonise each individual object
m_objectNumber = m_NextobjectNumber++ ;
TRACE(“Creating CMatrix object %1d - copy constructor other = %1d\n“ m_objectNumber other.m_objectNumber) ;
#endif
// copy constructor
m_pData = NULL ;
// use the other objects data pointer
m_NumColumns = other.m_NumColumns ;
m_NumRows = other.m_NumRows ;
m_pData = other.m_pData ; // copy the pointer
IncrementReferenceCount() ; // this thread can get the mutex multiple times without blocking
}
CMatrix::CMatrix(int nCols int nRows)
{
#ifdef _DEBUG
// so we can regonise each individual object
m_objectNumber = m_NextobjectNumber++ ;
TRACE(“Creating CMatrix object %1d - size constructor\n“ m_objectNumber) ;
#endif
// size constructor
ASSERT(nCols > 0) ; // matrix size error
ASSERT(nRows > 0) ; // matrix size error
m_pData = NULL ;
m_NumColumns = nCols ;
m_NumRows = nRows ;
m_pData = AllocateMemory(m_NumColumns m_NumRows) ;
IncrementReferenceCount() ; // count the reference to this memory
}
CMatrix::CMatrix(int size bool set_diagonal)
{
// construct a square matrix with 1.0‘s on the diagonal if required
#ifdef _DEBUG
// so we can regonise each individual object
m_objectNumber = m_NextobjectNumber++ ;
TRACE(“Creating CMatrix object %1d - square size constructor\n“ m_objectNumber) ;
#endif
// size constructor
ASSERT(size > 0) ; // matrix size error
m_pData = NULL ;
m_NumColumns = size ;
m_NumRows = size ;
m_pData = AllocateMemory(m_NumColumns m_NumRows) ;
IncrementReferenceCount() ; // count the reference to this memory
// set the dialognal if required
if (set_diagonal)
{
for (int i = 0 ; i < size ; ++i)
SetElement(i i 1.0) ;
}
}
// creates a CMatrix object from a SafeArray that contains a 2D matrix
// Note that you will probably have to call “VariantClear“ to correctly de-allocate
//
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 35902 2011-10-21 11:45 Matrix.cpp
文件 8674 2011-10-19 14:20 Matrix.h
相关资源
- 房屋销售管理系统C++
- 条件平差的 C++代码
- MFC下好用的高速绘图控件-(Hight-Spe
- usb_hid_vc++6.0读写设备源码
- 换肤窗口VC++程序与源码
- 亦思C++VC调用
- 数据结构算法与应用--C++语言描述(代
- 非常好用的c++ ftp库源码vs2013工程
- VC++6.0写的网络爬虫程序
- 数据结构 银行排队系统
- c++11的中文文档
- C++调用百度地图案例VC++
- MFC 窗口缩放
- AES加密源码使用C++实现
- C++MFC画圆源代码
- 纯C++打造的Splash Screen类打造专业的启
- MUSIC算法c++实现
- C/C++语言图像处理:各种滤波
- 课程设计课程表.zip
- VC++wav文件的读写
- C++ 垃圾代码生成器
- 数据结构算法与应用--C++语言描述(代
- Modbus C++
- 生产者消费者问题c++实现
- windows下获取音频信息(C++实现).
- VC++实现动态捆绑EXE文件
- 人工蜂群算法源代码c++,matlab
- c++ 本地代理服务器源码
- C++实现朴素贝叶斯分类器(加强版)
- linux操作系统下C++封装的基础库
评论
共有 条评论