前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++实现简单矩阵工具包

C++实现简单矩阵工具包

作者头像
英雄爱吃土豆片
发布2020-10-29 10:11:46
1.3K0
发布2020-10-29 10:11:46
举报
文章被收录于专栏:英雄爱吃土豆片

使用 python 实现深度学习时, python 中的 NumPy 库高效易用,令人惊艳。但因为刚入门 python ,过于精简的语法反而让我感到不适应,所以想着 C/C++ 是否也存在这样的矩阵处理库,答案是肯定的。尽管如此,还是总想着自己模仿着使用 C++ 写一个矩阵工具,所以就有了这篇文章。 ps:如果真的想要使用 C++ 进行科学计算,还是得使用正儿八经的处理库。

Matrix

开发工具:Dev-C++ 5.11

使用方法: 直接包含头文件 Matrix.h

接口文档:

类成员函数原型

函数使用说明

Matrix(int column)

定义一个长度为 column 的一维矩阵

Matrix(int row, int column)

定义一个行为 row,列为 column 的二维矩阵

static double Min(Matrix &mat)

求一个矩阵对象中的所有元素的最小值

static double Max(Matrix &mat)

求一个矩阵对象中的所有元素的最大值

static double Sum(Matrix &mat)

求一个矩阵对象中的所有元素的和

static Matrix Exp(Matrix &mat)

分别求一个矩阵对象中的所有元素的对数并以此创建一个矩阵

void setByArray(TT array)

模板函数,使用二维数组 array 设置矩阵的值

void setByArray(double* array)

使用传入的一维数组 array 设置矩阵的值

Matrix get_add_with(Matrix &mat)

计算当前矩阵对象与矩阵对象 mat 的加法运算结果并返回结果矩阵,当前矩阵不受影响

Matrix get_sub_with(Matrix &mat)

计算当前矩阵对象与矩阵对象 mat 的减法运算结果并返回结果矩阵,当前矩阵不受影响

Matrix get_mul_with(Matrix &mat)

计算当前矩阵对象与矩阵对象 mat 的乘法运算结果并返回结果矩阵,当前矩阵不受影响

Matrix get_mul_with(double coef)

计算当前矩阵对象与数值 coef 的乘法运算结果并返回结果矩阵,当前矩阵不受影响

double at(int column)

返回矩阵对象中对应下标的元素。矩阵为一维时使用,否则抛出异常

double at(int row, int column)

返回矩阵对象中对应下标的元素。

void input()

从键盘输入矩阵的值

void shape()

查看矩阵形状(输出矩阵的行和列)

void shape(string matrixName)

查看矩阵形状(输出矩阵的行和列),可自定义输出标识

void print()

打印矩阵(输出矩阵中所有元素的值)

print(string matrixName)

打印矩阵(输出矩阵中所有元素的值),可自定义输出标识

全局函数原型

函数使用说明

Matrix to_matrix(TT array, int row, int column)

模板函数,将一个二维数组转化为矩阵对象

Matrix to_matrix(double* array, int column)

将一个一维数组转化为矩阵对象

支持的运算符操作

运算符作用说明

-

取负运算符,将矩阵中的所有元素取为相反数

+

计算矩阵的加法运算

-

计算矩阵的减法运算

*

计算矩阵的乘法运算

==

判断两个矩阵是否相等

!=

判断两个矩阵是否不相等

>>

从键盘输入一个矩阵

<<

输出一个矩阵

需要注意: 1)Matrix 类只支持传入 double 类型的数组数据。 2)在设置矩阵的行和列时,确保与将要接收的数组保持一致。

程序示例:

代码语言:javascript
复制
#include <iostream>
#include "Matrix.h" //包含 Matrix 类所在的头文件 

using namespace std;

int main() {
	double a[3] = {1, 2, 3};
	double b[3][3] = {{3, 2, 1}, {3, 2, 1}, {3, 2, 1}};
	
	Matrix A(3);                  //定义一个长度为 3 的一维矩阵
	A.setByArray(a);              //调用类的 setByArray 将一维数组转化为矩阵 
	 
	Matrix B = to_matrix(b, 3, 3);//使用全局函数 to_matrix 将一个二维数组转化为一个二维矩阵 
	
	Matrix res = A * B;           //计算矩阵 A 和 B 的乘积并用矩阵对象 res 接收结果 
	
	A.print();       //打印矩阵 A 的值 
	cout << endl; 
	B.print("B");    //打印矩阵 B 的值,设置了输出标识 
	
	cout << endl;
	res.shape("res");//输出矩阵 res 的形状,设置了输出标识
	cout << res;     //输出接收乘积结果的矩阵 
	
	return 0;
}

运行效果:

在这里插入图片描述
在这里插入图片描述

项目源码:

github 地址 https://github.com/superman016/code016/tree/master/MatrixTool

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/10/23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Matrix
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档