что делает метод rows()?

#c #eigen #eigen3

#c #eigen #eigen3

Вопрос:

В собственной документации, которая в целом довольно хороша, я вижу ссылки на rows() метод MatrixBase . В настоящее время я пытаюсь найти способ получить количество строк в матрице, не зная ориентации (основной строки / столбца) матрицы, поэтому было бы действительно удобно просто вызвать rows() .

Но я нигде не могу найти это задокументировано. Что это за метод? Что он делает? Он просто возвращает Eigen::Dynamic для динамических матриц или знает количество строк?

Просматривая справочную страницу для MatrixBase, я вижу несколько упоминаний MatrixBase::rows() , но ссылки нет… Есть идеи?

Ответ №1:

rows() Метод действительно возвращает номера строк. Он определен в классе EigenBase , подклассом которого MatrixBase является. Его документация находится по адресу http://eigen.tuxfamily.org/dox/structEigen_1_1EigenBase.html#a5552abd83dbd03c85cea6d61fd8875a5 . Один из способов найти его — ввести «строки» в поле поиска в правом верхнем углу собственной документации, а затем нажать «строки» в появившемся всплывающем окне; откроется список rows() методов, определенных в библиотеке, в том числе EigenBase::rows() .

В документации это явно не указано, но rows() метод возвращает фактическое количество строк, определенное во время выполнения. Константа RowsAtCompileTime возвращает Dynamic для матриц динамического размера и количество строк для матриц статического размера.

Упоминания MatrixBase::rows() в документации — это пережиток прошлого, который необходимо устранить. Спасибо за ваши комплименты по поводу документации, но мы знаем, что ее можно улучшить.

Ответ №2:

Ну, MatrixBase является производным от DenseBase которого, в свою очередь, Является производным от DenseCoeffBase (с параметрами шаблона и т. Д.). Там определена функция row(): http://eigen.tuxfamily.org/dox/structEigen_1_1EigenBase.html#a5552abd83dbd03c85cea6d61fd8875a5

Doxygen говорит, что функция возвращает «количество строк»..