首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法理解CUSP中CSR表示的输出

无法理解CUSP中CSR表示的输出
EN

Stack Overflow用户
提问于 2013-05-01 17:29:06
回答 1查看 539关注 0票数 0

我正在尝试使用CUSP库。我正在读.txt文件,它基本上是稀疏的COO表示。我正在使用CUSP转换为CSR格式。

当我使用cusp::print()打印矩阵时,它会打印COO表示的正确结果。然而,当我将矩阵转换为CSR时,我已经编写了自己的打印函数,但结果并不是我想要的。

以下是代码片段

代码语言:javascript
复制
      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填充以下矩阵

代码语言:javascript
复制
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

以下是我使用代码得到的输出

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

发布于 2013-05-12 15:39:43

RowOffset指定有多少条目的累积数量。它将始终从0开始,并以稀疏矩阵中包含的非零数结束。

RO ::0 2 3 3 4 5

因此,您应该将该行读作:在稀疏矩阵的第一行之前,有零个条目RO。在第一行中有两个条目RO1,这两个条目由CI-CI1索引,并用V-V1的值填充。在矩阵的第二行中,还有一个条目RO2 == 3,它位于CI2列,值为V2。

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

希望这能澄清CSR矩阵格式的工作原理。否则,请随时提出更多要求。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16315727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档