C++中诊断(k)的替代方法是什么?

What is the alternative method for Diag(k) in C++?

本文关键字:方法 是什么 诊断 C++      更新时间:2023-10-16

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

GSL,Gnu 科学库有一个函数gsl_matrix_diagonal (gsl_matrix * m)。 这会在矩阵中创建一个"矢量视图",该视图或多或少是与矩阵对角线混叠的 gsl 矢量。 Dunno,如果你喜欢GSL,但它也包括BLAS支持。 我认为这是一个非常好的图书馆。

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