在C ++中Diag(k)的替代方法是什么?

时间:2012-04-12 18:19:14

标签: c++ matlab lapack blas

我正在将matlab代码转换为C ++代码并尝试在Lapack,Blas甚至Atlas中找到一个函数,它在matlab中的Diag(k)函数中执行相同的工作?有什么建议吗?

2 个答案:

答案 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;
            }
        }
    }