row () или col () члены arma :: Cube, кажется, не работают - PullRequest
0 голосов
/ 09 декабря 2018

При использовании кубических массивов (3D) броненосца у меня возникают трудности с использованием функций col () или row ().Они прекрасно работают с произвольной 2D-матрицей (например, A.col (0)), а связанные функции cols () и row () работают, как и ожидалось, с массивами кубов (например, Q.cols (0,1);см. ниже), но row () и col (), похоже, не работают для этого типа данных.Вот минимальный рабочий пример с выводом, включенным в качестве комментариев:

    #include <iostream>
    #include <armadillo>
    int main() {
        arma::Cube<double> Q(2,2,2,arma::fill::randu);
        Q.print();

    // [cube slice 0]
    //   0.7868   0.7107
    //   0.2505   0.9467
    // [cube slice 1]
    //   0.0193   0.2513
    //   0.4049   0.0227

    // The rows() and cols() function work fine to give me row- and columnwise access:

        Q.rows(0,0).print();

    // [cube slice 0]
    //   0.7868   0.7107
    // [cube slice 1]
    //   0.0193   0.2513

        Q.cols(0,0).print();

    // [cube slice 0]
    //   0.7868
    //   0.2505
    // [cube slice 1]
    //   0.0193
    //   0.4049

    // So far so good. I assumed row() and col() functions would
    // simply access single rows or columns, respectively, through 
    // the slices. But this is not the case. If I try to access 
    // the row() or col() functions via .print(), a core dump ensues.
    // If I examine the size of these objects, they are either
    // empty or extremely large.

        std::cout << size(Q.row(0)) << std::endl;
    // 0x0x0
        std::cout << size(Q.col(0)) << std::endl;
    // 0x0x18446744073709551615
        return 0;
    }

Это указывает на то, что я неправильно использую эти функции (по крайней мере, на Cube объектах), хотя документация показывает Q.row (row_number) и Q.col (col_number), которые будут использоваться таким образом.Однако, как упоминалось выше, доступ к .row () или .col () с использованием 2D матрицы работает, как и ожидалось.

Может кто-нибудь сказать мне, в чем проблема?

...