之前记录了Eigen生成给定数据的稀疏矩阵,这里我们生成一个随机给定数据和任意规模、任意稀疏度的矩阵。
定义函数
这里稀疏矩阵仍旧采取了三元组的存储方式,函数中有三个输入参数,即稀疏矩阵行列和稀疏度
批注:这里随机生成非零位置未排除重复位置,可能事实稀疏度会略低于给定的稀疏度。
#include "iostream"
#include "Eigen/SparseCore"
#include "time.h"
using namespace std;
using namespace Eigen;
SparseMatrix<double> getSparseMatrix(int matrix_height, int matrix_width,double sparsity)
{
SparseMatrix<double> A( matrix_height, matrix_width);
vector < Triplet <double> >triplets;
int ans= matrix_height * matrix_width * sparsity;
int r[ans];
int c[ans];
double value[ans];
int i;
srand((unsigned)time(NULL));
for(i=0;i<ans;i++)
{
r[i]=rand()%matrix_height;
}
srand(ans);
for (i=0;i<ans;i++)
{
c[i]=r