C/C++矩阵运算

---------------------------------------

编辑于2020.03.08

---------------------------------------

本文使用C++做矩阵的基本运算,包括:

加法

减法

乘法

除法(未完成,除法的实现比较复杂,难点在于做矩阵求逆,矩阵求逆目前常用 高斯-约旦法,日后有时间再做研究)

Show the codes:
---------------------------------------START-------------------------------------------------------------

common.h

common.h里面是一些共同部分的头文件级宏定义等

----

#pragma once
#ifndef _COMMON_
#define _COMMON_

#include <iostream>
#include <cmath>
#include <assert.h>
using namespace std;
#define uint unsigned int

#endif

----

matrixCal.h

matrixCal.h里面声明了矩阵的类

----

#pragma once
#include "common.h"
#ifndef _MATRIX_CAL_
#define _MATRIX_CAL_
#define UNEQUAL 1
#define EQUAL 1

class Matrix
{
public:
	Matrix(uint rows=3, uint cols=3);
	~Matrix();
	void MartixInit();//初始化
	void MartixUnit();//单位矩阵
	void MatrixAdd(Matrix& Add, Matrix* res);//加法
	void MatrixDec(Matrix& Dec, Matrix* res);//减法
	void MatrixMul(Matrix& Mul, Matrix* res);//乘法
	void MatrixDiv(Matrix& Div, Matrix* res);//除法
	bool MatrixEqual(Matrix* m);//判断相等
	void Show();//打印矩阵信息

private:
	uint _rows;
	uint _cols;
	double** Martix;

};


#endif // !_MATRIX_CAL_

----

<
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C语言中进行矩阵运算的优化有几种方法。首先,可以使用专门的矩阵计算库来提高运算效率。例如,Armadillo是一个C++下的矩阵计算库,它提供了许多矩阵操作函数,支持矩阵逐元素操作、矩阵分块操作以及对整体矩阵的操作等等。它还可以自动检测并使用更快的基本运算实现,如BLAS、OpenBLAS、IntelMKL和AMDACML。此外,ViennaCL是一个并行矩阵计算库,可以在C语言中进行并行矩阵计算,提高运算速度。 另外,还可以使用OpenCV的矩阵计算功能来进行优化。OpenCV提供了类Matlab的矩阵C接口,可以方便地进行计算机视觉和机器学习相关的矩阵操作。它还提供了cv::gpu模块和cv::ocl模块,分别支持CUDA和OpenCL的并行矩阵计算功能,可以进一步提高运算效率。 除了使用专门的矩阵计算库,还可以使用一些优化技术来提高矩阵运算的效率。例如,可以使用多线程或并行计算来加速矩阵运算。还可以使用SIMD指令集来进行向量化计算,提高运算速度。此外,还可以使用矩阵分块技术来减少内存访问次数,提高缓存命中率,从而提高运算效率。 总之,对于C语言中的矩阵运算优化,可以选择使用专门的矩阵计算库,如Armadillo和ViennaCL,也可以使用OpenCV的矩阵计算功能。此外,还可以使用多线程、并行计算、SIMD指令集和矩阵分块等技术来提高运算效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值