我正在将matlab代码转换为C ++代码并尝试在Lapack,Blas甚至Atlas中找到一个函数,它在matlab中的Diag(k)函数中执行相同的工作?有什么建议吗?
答案 0 :(得分:0)
GSL, the Gnu Scientific Library有一个函数gsl_matrix_diagonal (gsl_matrix * m)
。这在矩阵中创建了一个“矢量视图”,它或多或少是一个别名为矩阵对角线的gsl矢量。 Dunno,如果你喜欢GSL,但它也包括BLAS支持。我认为这是一个非常好的图书馆。
答案 1 :(得分:0)
static void create_diagonal_matrix(T* matrix,T* v,int size)
{
for(int i=0;i<size;i++)
{
for(int32_t j=0;j<size;j++)
{
if(i==j)
matrix[j*size+i]=v[i];
else
matrix[j*size+i]=0;
}
}
}