头文件,包含矩阵 【创建、叉乘、读取、修改、加减、转置 】操作
//文件名:mat.h
#ifndef _H_MAT
#define _H_MAT
#define RIGHT true//右乘
#define LEFT false//左乘
typedef struct mat{
int colSize;//行大小
int rowSize;//列大小
double **p;//存放矩阵中的元素
} mat;
typedef struct vector{
int Size;//行大小
double *p;//存放向量中的元素
} vector;
// 矩阵X向量
vector *matXvector(mat *m, vector *v);
/***************************************************************
* 注释打'、':已编写并测试,没、没测试
* 前缀'_':自更新【对自己进行修改】
***************************************************************/
class Mat
{
public:
Mat(double nums[], int colSize, int rowSize);//构造矩阵、
~Mat();//、
mat *D;
double **temp;//备用指针
double val;//det(mat)//暂时不用
//读
double get(int col, int row);//返回矩阵中的元素,从0开始、
vector *getCol(int col);//返回矩阵中的行,从0开始、
vector *getRow(int row, mat *np=NULL);//返回矩阵中的列,从0开始,默认读取本矩阵、
//写
void write(int col, int row, double dat, bool _self = false);//修改元素【_self:自加/减dat】、
void delVector(vector *p);//释放向量、
void delMat(mat *p);//释放矩阵、
//运算
mat *matXmat(mat *a, bool right=LEFT);//矩阵/向量叉乘【默认左乘aXD】、
void _matXmat(mat *a, bool right=LEFT);//叉乘【直接赋值给自身,默认左乘】、
mat *T(mat *D);//矩阵转置【外部可用】
void T();//矩阵转置【对自身】
bool _add(mat *r);//矩阵+矩阵
bool _add(double r);//矩阵+常数矩阵
};
#endif
源文件
/**
* mat.cpp
* 功能:矩阵计算
*/
#include <stdlib.h>
#include "mat.h"
//通过数组构造矩阵
Mat::Mat(double nums[], int _colSize, int _rowSize){
D = (mat *)malloc(sizeof(mat));
D->rowSize = _rowSize;
D