0

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

4

2 回答 2

0

GSL,Gnu 科学图书馆有一个功能gsl_matrix_diagonal (gsl_matrix * m)。这会在矩阵中创建一个“向量视图”,它或多或少是一个别名为矩阵对角线的 gsl 向量。不知道你是否喜欢 GSL,但它也包括 BLAS 支持。我认为这是一个非常好的图书馆。

于 2012-04-13T03:08:24.670 回答
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;
            }
        }
    }
于 2012-04-13T12:38:42.933 回答