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

📄 matrix.cpp

📁 用C++实现的数字图像处理各个算法源代码 我精心整理的 很难的啊 希望可以给大家带来帮助
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//----------------------------------------------------------------------
//最后编改: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	另一个矩阵
//----------------------------------------------------------------------
//返    回:CMatrix	一个新矩阵。
//----------------------------------------------------------------------
//编	者:耿	楠
//----------------------------------------------------------------------
//最后编改:2002年10月18日
////////////////////////////////////////////////////////////////////////
CMatrix CMatrix::operator +(CMatrix &Other)
{
	//定义一个矩阵对象
	CMatrix ReturnValue(RowNumber, ColumnNumber);

	//用0对新矩阵进行初始化
	ReturnValue.Fill(0);

	//两个矩阵行列数不相等,无法执行+操作,返回0矩阵。
	if(this->RowNumber != Other.GetRowNumber() || this->ColumnNumber != Other.GetColumnNumber())
		return ReturnValue;

	int i, j;
	for(i = 0; i < RowNumber; i++)
		for(j = 0; j < ColumnNumber; j++)
			//两个矩阵相加
			ReturnValue[i][j] = data[i * ColumnNumber + j] + Other[i][j];

	//返回新矩阵的指针
	return ReturnValue;
}

////////////////////////////////////////////////////////////////////////
//操作符重载operator*()
//----------------------------------------------------------------------
//基本功能:用于重载操作符*,用当前矩阵乘上另一个矩阵,得到一个新的矩阵。
//----------------------------------------------------------------------
//参数说明:CMatrix& Other	另一个矩阵
//----------------------------------------------------------------------
//返    回:CMatrix	一个新矩阵。
//----------------------------------------------------------------------
//编	者:耿	楠
//----------------------------------------------------------------------
//最后编改:2002年10月18日
////////////////////////////////////////////////////////////////////////
CMatrix CMatrix::operator *(CMatrix &Num2)
{
	int RetRow, RetColumn;

	//定义一个矩阵对象,并用当前矩阵的行数和列数对RetRow和RetColumn赋值
	CMatrix RetValue(RetRow = this->RowNumber,RetColumn = Num2.GetColumnNumber());

	//用0对新矩阵进行初始化
	RetValue.Fill(0);

	//如果当前矩阵的列数不等于传入矩阵的行数,无法进行*操作,返回0矩阵
	if(this->ColumnNumber != Num2.GetRowNumber())
		return RetValue;
	
	int i, j, counter;
	TYPE sum;
	for(i = 0; i < RetRow; i++)
	{
		for(j = 0; j < RetColumn; j++)
		{
			for(sum = 0, counter = 0; counter < this->ColumnNumber; counter++)
				sum += (*this)[i][counter] * Num2[counter][j];
			RetValue[i][j] = sum;
		}
	}

	//返回新矩阵的指针
	return RetValue;
}


////////////////////////////////////////////////////////////////////////
//矩阵初始化Fill()
//----------------------------------------------------------------------
//基本功能:用给定的常量给矩阵各个元素赋值。
//----------------------------------------------------------------------
//参数说明:TYPE FillNumber	给定的常量。
//----------------------------------------------------------------------
//返    回:无。
//----------------------------------------------------------------------
//编	者:耿	楠
//----------------------------------------------------------------------
//最后编改:2002年10月18日
////////////////////////////////////////////////////////////////////////
void CMatrix::Fill(TYPE FillNumber)
{
	int i,j;
	for(i = 0; i < RowNumber; i++)
		for(j = 0; j < ColumnNumber; j++)
			data[i * ColumnNumber + j] = FillNumber;
}

////////////////////////////////////////////////////////////////////////
//生成单位矩阵MakeUnit()
//----------------------------------------------------------------------
//基本功能:生成一个对角元素值为1的方阵。
//----------------------------------------------------------------------
//参数说明:无。
//----------------------------------------------------------------------
//返    回:无。
//----------------------------------------------------------------------
//编	者:耿	楠
//----------------------------------------------------------------------
//最后编改:2002年10月18日
////////////////////////////////////////////////////////////////////////
void CMatrix::MakeUnit()
{
	//行数和列数不相等,无法进行操作,返回
	if(RowNumber != ColumnNumber)
		return;
	
	int i;

	for(i = 0; i < RowNumber; i++)

		//给各对角元素赋值为1
		(*this)[i][i]=1.;
}

////////////////////////////////////////////////////////////////////////
//返回矩阵的列数GetColumnNumber()
//----------------------------------------------------------------------
//基本功能:返回矩阵的列数。
//----------------------------------------------------------------------
//参数说明:无。
//----------------------------------------------------------------------
//返    回:int	矩阵的列数。
//----------------------------------------------------------------------
//编	者:耿	楠
//----------------------------------------------------------------------
//最后编改:2002年10月18日
////////////////////////////////////////////////////////////////////////
int CMatrix::GetColumnNumber()
{
	return ColumnNumber;
}

////////////////////////////////////////////////////////////////////////
//返回矩阵的行数GetColumnNumber()
//----------------------------------------------------------------------
//基本功能:返回矩阵的行数。
//----------------------------------------------------------------------
//参数说明:无。
//----------------------------------------------------------------------
//返    回:int	矩阵的行数。
//----------------------------------------------------------------------
//编	者:耿	楠
//----------------------------------------------------------------------
//最后编改:2002年10月18日
////////////////////////////////////////////////////////////////////////
int CMatrix::GetRowNumber()
{
	return RowNumber;
}

////////////////////////////////////////////////////////////////////////
//调试转储Dump()
//----------------------------------------------------------------------
//基本功能:用于调试的转储函数。
//----------------------------------------------------------------------
//参数说明:无。
//----------------------------------------------------------------------
//返    回:无。
//----------------------------------------------------------------------
//编	者:耿	楠
//----------------------------------------------------------------------
//最后编改:2002年10月18日
////////////////////////////////////////////////////////////////////////
void CMatrix::Dump()
{
#ifdef _DEBUG
	int i, j;
	for(i = 0; i < RowNumber; i++)
	{
		for(j = 0; j < ColumnNumber; j++)
			TRACE("%f ", data[i * ColumnNumber + j]);
		TRACE("\n");
	}
#endif
}

⌨️ 快捷键说明

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