无法理解在CUSP CSR表示的输出(Not able to understand output o

2019-10-29 14:06发布

我尝试使用了风口浪尖库。 我读的.txt它们基本上是稀疏的COO表示文件。 我使用的风口浪尖转换成CSR格式。

当我打印矩阵cusp::print()它打印COO表示正确的结果。 然而,当我矩阵转换成CSR,我写我自己的函数进行打印,但结局不是我想要的。

下面是摘录

      main()
        {
        //.
        //bla bla
        //..
        //create a 2d coo matrix
    cusp::coo_matrix<int, int, cusp::host_memory> D(nRows_data, nCols_data, nnz_data);

            // Load data from file into sparse matrices  
            //fill 2D coo matrix
            fill2DCooMatrixFromFile( fNameData, D );


            std::cout<<"\n----------------------------\n";
            cusp::print( D );

            cusp::csr_matrix<int, int, cusp::host_memory> csrD = D;
            std::cout<<"\n----------------------------\n";
            printCSRMatrix( csrD );
        }



        //print csr matrix
        void printCSRMatrix( cusp::csr_matrix<int, int, cusp::host_memory> csr )
        {
            std::cout<<"csr matrix <"<<csr.num_rows<<", "<<csr.num_cols<<"> with  <csr.num_entries<<" enteries\n";

            std::cout<<"V  :: ";
            for( int i=0 ; i<csr.values.size() ; i++ )
                std::cout<<csr.values[i]<<"  ";
            std::cout<<"\n";


            std::cout<<"CI :: ";
            for( in

t i=0 ; i<csr.column_indices.size() ; i++ )
            std::cout<<csr.column_indices[i]<<"  ";
        std::cout<<"\n";


        std::cout<<"RO :: ";
        for( int i=0 ; i<csr.row_offsets.size() ; i++ )
            std::cout<<csr.row_offsets[i]<<"  ";
        std::cout<<"\n";

    }

假设fill2DCooMatrixFromFile在下面的基质填充

1 0 1 0 0
0 0 0 1 0
0 0 0 0 0
0 1 0 0 0
0 0 0 1 0

以下为输出我的代码获得

sparse matrix <5, 5> with 5 entries
              0              0              1
              0              2              1
              1              3              1
              3              1              1
              4              3              1

----------------------------
csr matrix <5, 5> with 5 enteries
V  :: 1  1  1  1  1  
CI :: 0  2  3  1  3  
RO :: 0  2  3  3  4  5  

我无法理解的RowOffset是输出。

Answer 1:

该RowOffset指定累计多少个条目有。 它将总是从0开始,并与包含在稀疏矩阵的非零数结束。

RO :: 0 2 3 3 4 5

因此,你应该阅读行:你的稀疏矩阵的第一行之前,还有零项RO [0]。 在第一行中有两个条目RO [1],这些是由CI索引[0] -CI [1]和填充有V的值[0] -V [1]。 在矩阵的第二行中,有一个条目,因此RO [2] == 3,它是位于列CI [2]具有值V [2]。

正如你所看到的RO不改变第三和第四个数字表示矩阵中的一个空行之间的值。

希望明确了企业社会责任矩阵格式是如何工作的。 否则,随意问。



文章来源: Not able to understand output of CSR Representation in CUSP