⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matrix.cpp

📁 用C++实现的数字图像处理各个算法源代码 我精心整理的 很难的啊 希望可以给大家带来帮助
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// CMatrix.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

////////////////////////////////////////////////////////////////////////
//无参构造函数CMatrix()
//----------------------------------------------------------------------
//基本功能:矩阵类的无参构造函数,只是生成矩阵类对象,需要再调用Creat()函
//			数以创建其元素。
//----------------------------------------------------------------------
//返    回:矩阵类对象指针
//----------------------------------------------------------------------
//编	者:耿	楠
//----------------------------------------------------------------------
//最后编改:2002年10月18日
////////////////////////////////////////////////////////////////////////
CMatrix::CMatrix()
{
	//元素为空
	data = NULL;
}

////////////////////////////////////////////////////////////////////////
//构造函数CMatrix()
//----------------------------------------------------------------------
//基本功能:用传入的参数构造矩阵类对象。这里动态生成一个二维数组,用于存
//			储矩阵数据,数组类形已定义为double型。
//----------------------------------------------------------------------
//参数说明:int RowNumber		矩阵的行数
//			int ColumnNumber	矩阵的列数
//----------------------------------------------------------------------
//返    回:矩阵类对象指针
//----------------------------------------------------------------------
//编	者:耿	楠
//----------------------------------------------------------------------
//最后编改:2002年10月18日
////////////////////////////////////////////////////////////////////////
CMatrix::CMatrix(int RowNumber, int ColumnNumber)
{
	//为矩阵元素分配内空间
	data = new TYPE[RowNumber*ColumnNumber];
	//为行数赋值
	this->RowNumber = RowNumber;
	//为列数赋值
	this->ColumnNumber = ColumnNumber;
}

////////////////////////////////////////////////////////////////////////
//拷贝构造函数CMatrix()
//----------------------------------------------------------------------
//基本功能:用传入的参数CMatrix &Matrix拷贝构造另一个矩阵类对象。
//----------------------------------------------------------------------
//参数说明:int RowNumber		矩阵的行数
//			int ColumnNumber	矩阵的列数
//----------------------------------------------------------------------
//返    回:矩阵类对象指针
//----------------------------------------------------------------------
//编	者:耿	楠
//----------------------------------------------------------------------
//最后编改:2002年10月18日
////////////////////////////////////////////////////////////////////////
CMatrix::CMatrix(CMatrix &Matrix)
{
	//列数
	this->ColumnNumber = Matrix.GetColumnNumber();
	//行数
	this->RowNumber = Matrix.GetRowNumber(); 
	//数据
	data = new TYPE[RowNumber * ColumnNumber];

	*this = Matrix;
}

////////////////////////////////////////////////////////////////////////
//创建矩阵函数Create()
//----------------------------------------------------------------------
//基本功能:用传入的参数创建矩阵类对象。这里动态生成一个二维数组,用于存
//			储矩阵数据,数组类形已定义为double型。
//----------------------------------------------------------------------
//参数说明:int RowNumber		矩阵的行数
//			int ColumnNumber	矩阵的列数
//----------------------------------------------------------------------
//返    回:矩阵类对象指针
//----------------------------------------------------------------------
//编	者:耿	楠
//----------------------------------------------------------------------
//最后编改:2002年10月18日
////////////////////////////////////////////////////////////////////////
CMatrix::Create(int RowNumber,int ColumnNumber)
{
	//为矩阵元素分配内空间
	data = new TYPE[RowNumber*ColumnNumber];
	//为行数赋值
	this->RowNumber = RowNumber;
	//为列数赋值
	this->ColumnNumber = ColumnNumber;
}

////////////////////////////////////////////////////////////////////////
//析构函数~CMatrix()
//----------------------------------------------------------------------
//基本功能:用于删除存储矩阵数据的内存堆
//----------------------------------------------------------------------
//参数说明:无
//----------------------------------------------------------------------
//返    回:无
//----------------------------------------------------------------------
//编	者:耿	楠
//----------------------------------------------------------------------
//最后编改:2002年10月18日
////////////////////////////////////////////////////////////////////////
CMatrix::~CMatrix()
{
	//删除存储矩阵数据的内存堆
	delete data;
}

////////////////////////////////////////////////////////////////////////
//操作符重载operator[]()
//----------------------------------------------------------------------
//基本功能:用于重载操作符[],允许用Matrix[i][j]的形式直接对矩阵的元素进
//			操作。
//----------------------------------------------------------------------
//参数说明:int Row	矩阵元素的下标
//----------------------------------------------------------------------
//返    回:指定矩阵元素的值,为TYPE型。
//----------------------------------------------------------------------
//编	者:耿	楠
//----------------------------------------------------------------------
//最后编改:2002年10月18日
////////////////////////////////////////////////////////////////////////
TYPE* CMatrix::operator[](int Row)
{
	return &(data[ColumnNumber*Row]);
}

////////////////////////////////////////////////////////////////////////
//操作符重载operator*=()
//----------------------------------------------------------------------
//基本功能:用于重载操作符*=,用一常数乘以当前矩阵各元素,并用得到的值对
//			当前矩阵赋值。
//----------------------------------------------------------------------
//参数说明:TYPE Number	与矩阵元素相乘的常量。
//----------------------------------------------------------------------
//返    回:无
//----------------------------------------------------------------------
//编	者:耿	楠
//----------------------------------------------------------------------
//最后编改:2002年10月18日
////////////////////////////////////////////////////////////////////////
void CMatrix::operator*=(TYPE Number)
{
	int i,j;
	for(i = 0; i < RowNumber; i++)
		for(j = 0; j < ColumnNumber; j++)
			//对当前的元素乘以Number,并将结果赋与当前元素
			data[i * ColumnNumber + j] *= Number;	
}

////////////////////////////////////////////////////////////////////////
//操作符重载operator=()
//----------------------------------------------------------------------
//基本功能:用于重载操作符=,用另一个矩阵对当前矩阵赋值。
//----------------------------------------------------------------------
//参数说明:CMatrix& Other	另一个矩阵
//----------------------------------------------------------------------
//返    回:无
//----------------------------------------------------------------------
//编	者:耿	楠
//----------------------------------------------------------------------
//最后编改:2002年10月18日
////////////////////////////////////////////////////////////////////////
void CMatrix::operator=(CMatrix& Other)
{
	//两个矩阵行列数不相等,无法执行=操作,直接返回。
	if(this->RowNumber != Other.GetRowNumber() || this->ColumnNumber != Other.GetColumnNumber())
		return;

	int i,j;

	for(i = 0; i < RowNumber; i++)
		for(j = 0; j < ColumnNumber; j++)
			//赋值
			data[i * ColumnNumber + j] = Other[i][j];
}

////////////////////////////////////////////////////////////////////////
//操作符重载operator+=()
//----------------------------------------------------------------------
//基本功能:用于重载操作符+=,用当前矩阵加上另一个矩阵,并用得到的值对当
//			前矩阵赋值。
//----------------------------------------------------------------------
//参数说明:CMatrix& Other	另一个矩阵
//----------------------------------------------------------------------
//返    回:无
//----------------------------------------------------------------------
//编	者:耿	楠

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -