-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathMatrix.h
71 lines (54 loc) · 1.88 KB
/
Matrix.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#ifndef Matrix_h
#define Matrix_h
#ifndef MAX_SIZE ///<矩阵最大维度
#define MAX_SIZE 50
#endif
#ifndef DBL_EPSILON ///<矩阵求逆0
#define DBL_EPSILON 0.001
#endif
#include<stdio.h>
#include<string.h>
#include<math.h>
/**************************
*@brief Matrix 矩阵
**************************/
struct Matrix
{
int Row; ///< 行
int Col; ///< 列
double Val[MAX_SIZE*MAX_SIZE];
};
/**********************************************
*@brief Matrix_Add 矩阵加法 m3=m1+m2
*@param m1 I 输入矩阵m1
*@param m2 I 输入矩阵m2
*@param m3 O 输出矩阵m3
**********************************************/
void Matrix_Add(const struct Matrix* m1,const struct Matrix *m2,struct Matrix *m3);
/**********************************************
*@brief Matrix_Subtract 矩阵减法 m3=m1-m2
*@param m1 I 输入矩阵m1
*@param m2 I 输入矩阵m2
*@param m3 O 输出矩阵m3
**********************************************/
void Matrix_Subtract(const struct Matrix* m1,const struct Matrix *m2,struct Matrix *m3);
/**********************************************
*@brief Matrix_Mutiply 矩阵乘法 m3=m1*m2
*@param m1 I 输入矩阵m1
*@param m2 I 输入矩阵m2
*@param m3 O 输出矩阵m3
**********************************************/
void Matrix_Mutiply(const struct Matrix* m1,const struct Matrix *m2, struct Matrix *m3);
/**********************************************
*@brief Matrix_Transpose 矩阵转置 m2=m1_T
*@param m1 I 输入矩阵m1
*@param m2 O 输出矩阵m2
**********************************************/
void Matrix_Transpose(const struct Matrix* m1, struct Matrix* m2);
/**********************************************
*@brief Matrix_Transpose 矩阵求逆 m2=inv(m1)
*@param m1 I 输入矩阵m1
*@param m2 O 输出矩阵m2
**********************************************/
int Matrix_Inv(const struct Matrix* m1,struct Matrix* m2);
#endif