matrix.h
小矩阵的加、减、乘、除、求逆等操作,由于均为小型数组操作,所有函数均为内联函数
- Author
Zhu Dengda (zhudengda@mail.iggcas.ac.cn)
- Date
2024-07-24
Functions
-
inline int grt_cmat2x2_inv(const cplx_t M[2][2], cplx_t invM[2][2])
计算2x2复矩阵的逆
- 参数:
M – [in] 原矩阵
invM – [out] 逆矩阵
- 返回:
状态代码,是否有除零错误,非0为异常值
-
inline void grt_cmat2x2_add(const cplx_t M1[2][2], const cplx_t M2[2][2], cplx_t M[2][2])
计算2x2复矩阵的和
- 参数:
M1 – [in] 矩阵1
M2 – [in] 矩阵2
M – [out] 和矩阵
-
inline void grt_cmat2x2_sub(const cplx_t M1[2][2], const cplx_t M2[2][2], cplx_t M[2][2])
计算2x2复矩阵的差
- 参数:
M1 – [in] 矩阵1
M2 – [in] 矩阵2
M – [out] 差矩阵, M1 - M2
-
inline void grt_cmat2x2_one_sub(cplx_t M[2][2])
计算单位阵与2x2复矩阵的差
- 参数:
M – [inout] 差矩阵 I-M2
-
inline void grt_cmat2x2_mul(const cplx_t M1[2][2], const cplx_t M2[2][2], cplx_t M[2][2])
计算2x2复矩阵的积(矩阵相乘)
- 参数:
M1 – [in] 矩阵1
M2 – [in] 矩阵2
M – [out] 积矩阵, M1 * M2
-
inline void grt_cmat2x2_k(const cplx_t M1[2][2], cplx_t k0, cplx_t M[2][2])
计算2x2复矩阵和常量的积
- 参数:
M1 – [in] 矩阵1
k – [in] 常数
M – [out] 积矩阵, k * M2
-
inline void grt_cmat2x1_mul(const cplx_t M1[2][2], const cplx_t M2[2], cplx_t M[2])
计算2x2复矩阵和2x1的复向量的积
- 参数:
M1 – [in] 矩阵1
M2 – [in] 向量
M – [out] 积矩阵, M1 * M2
-
inline void grt_cmat2x2_assign(const cplx_t M1[2][2], cplx_t M2[2][2])
2x2复矩阵赋值
- 参数:
M1 – [in] 源矩阵
M2 – [out] 目标矩阵
-
inline void grt_cmatmxn_mul(size_t m1, size_t n1, size_t p1, const cplx_t M1[m1][n1], const cplx_t M2[n1][p1], cplx_t M[m1][p1])
计算mxn复矩阵的积(小矩阵)(最暴力的方式)
- 参数:
m1 – [in] M1矩阵行数
n1 – [in] M1矩阵列数
p1 – [in] M2矩阵列数
M1 – [in] M1矩阵
M2 – [in] M2矩阵
M – [out] 积矩阵 M1 * M2
-
inline void grt_cmatmxn_transpose(size_t m1, size_t n1, const cplx_t M1[m1][n1], cplx_t M2[n1][m1])
计算mxn复矩阵的转置矩阵(不共轭)
- 参数:
m1 – [in] M1矩阵行数
n1 – [in] M1矩阵列数
M1 – [in] M1矩阵
M2 – [out] M2矩阵 (M1^T)
-
inline void grt_cmatmxn_block(size_t m1, size_t n1, const cplx_t M[m1][n1], size_t im, size_t in, size_t lm, size_t ln, cplx_t Q[lm][ln])
从M1大矩阵中划分Q子矩阵
- 参数:
m1 – [in] M1矩阵行数
n1 – [in] M1矩阵列数
M1 – [in] M1矩阵
im – [in] 子矩阵起始行索引
in – [in] 子矩阵起始列索引
lm – [in] 子矩阵行数
ln – [in] 子矩阵列数
Q – [out] 子矩阵
-
inline void grt_cmatmxn_block_assign(size_t m1, size_t n1, cplx_t M[m1][n1], size_t im, size_t in, size_t lm, size_t ln, const cplx_t Q[lm][ln])
将小矩阵Q填充到M1大矩阵中
- 参数:
m1 – [in] M1矩阵行数
n1 – [in] M1矩阵列数
M1 – [in] M1矩阵
im – [in] 子矩阵起始行索引
in – [in] 子矩阵起始列索引
lm – [in] 子矩阵行数
ln – [in] 子矩阵列数
Q – [out] 子矩阵