CSC 矩阵
Compressed Sparse Columns, 列优先进行存储, 稀疏矩阵
一般CSC 需要三个信息来表征稀疏矩阵:
P_data | 矩阵中非零,不重复的数值序列 | 对应有多少个不重复的非零数(是否去重和具体软件有关); Values 注意: osqp 中以列顺序存储所有非零的数字, 重复的也会记录 |
P_indices | 按照列顺序,将每一列非零元素所在的行号依次记录 | 对应有多少个非零数,重复的要记录; Row Indices |
P_indptr | 表示前n列总共有多少个非零元素,逐列递增 | 第一个数皆为0, 第二个数为2, 代表第0列有2个非零数,第一个数为0是左闭右开原则; Column Offsets |
osqp c的例子
![](https://img-blog.csdnimg.cn/img_convert/cc3d70830a475bbd4b1fd2b8ab08872e.png)
![](https://img-blog.csdnimg.cn/img_convert/6f2c72800de275ebff6b825256cc1856.png)
// the location of file: /usr/local/include/osqp/types.h
typedef struct {
c_int n; ///< number of variables n, H n*n
c_int m; ///< number of constraints m, A m * n
csc *P; ///< the upper triangular part of the quadratic cost matrix P
csc *A; ///< linear constraints matrix A in csc format (size m x n)
c_float *q; ///< dense array for linear part of cost function (size n)
c_float *l; ///< dense array for lower bound (size m)
c_float *u; ///< dense array for upper bound (size m)
} OSQPData;